로그를 어떻게 남겨야할지 찾다가 넷마블 기술 블로그에 좋은 자료가 있어 간략하게 기록을 남겨봅니다.
왜 로그를 남길까?
로그는 서비스의 이상현상을 파악하고 발생원인을 찾기 위해 남깁니다.
또한 요즘처럼 MSA를 도입하며 서비스가 커지고 복잡해지는 상황에서 문제를 파악하기 쉽도록 로그를 남기는 것이 중요합니다.
중앙집중식로깅
기존에는 로컬 서버에 로그를 축적했었지만, 이런 방법으로는 로그 정보에 접근하기가 어렵고, MSA가 등장함에따라 로그가 발생하는 서버의수가 많아지는 어려움이 있었습니다.
이런 문제를 해결하기 위해 중앙집중식로깅이 등장하게 되었습니다. 기본적으로 여러 곳에서 발생하는 로그를 한 곳으로 모아 관리하는 것입니다.
이렇게 되면 로그 정보에 접근하기는 쉬워졌지만, 너무 다양한 곳에서 발생하는 로그가 쌓이기 때문에 사용자가 이해하고 관리하기 쉽도록 로그를 작성할 필요성이 높아졌습니다.
구조적 로깅
그래서 등장한 것이 구조적 로깅이 등장했습니다. 주로 JSON 형식을 차용해서 여러 정보들을 구조적으로 담을 수 있습니다. 이를 사용하면, 필터를 적용하기 위한 필드를 분리해서 관리하여, 필요한 정보만 추출해서 보기 수월해집니다.
{
"time" : "2022-01-01T23:00:00"
"level" : "INFO"
"meesage" : "Starting posting a question"
"memberId" : 1
}
언제 로그들을 남기나?
1. Error : 동작에 이상이있는 정도의 문제가 발생했을 때 -> 원인 파악 목적
2. Warning: 동작에는 이상이 없는 문제가 발생했을 때 -> 원인 파악 목적
3. Info : 서비스가 성장적으로 수행됐을 때 -> 정상적으로 완료한 작업량 측정 및 시스템 환경이나 설정 정보 확인 목적
4. Debug : 개발 단계에서 Info의 내용을 상세히 기록할 때 -> 문제 발생 시 원인 파악을 위해
어떻게 작성하나?
1. 라이브러리를 활용하여 구조적으로 작성한다.
2. Error/WARN에서는 스택트레이스와 콘텍스트 포함한다.
3. 단위 작업 단위로 기록한다. 서비스가 복잡하고 동시다발적으로 발생할 수 있기 때문에 한 작업 단위로 로그를 남겨 파악이 쉽도록 한다.
4. 필터 적용이 쉽도록 필터용 필드를 만든다. ex. 에러코드, 서비스코드 등
오늘은 계속 궁금했던 로깅에 대해 전반적인 이해를 했습니다. 이제 서비스에 직접 적용해봐야겠습니다ㅎㅎㅎ
'General' 카테고리의 다른 글
MSA(Micro Service Architecture) 이해해보기 (0) | 2023.05.22 |
---|---|
[Google Java Convention] 구글의 자바 컨벤션 정리 (1) | 2023.01.26 |
객체지향 설계 원칙 - SOLID (0) | 2022.11.14 |
TDD(테스트 주도 개발) 시작하는 방법 (0) | 2022.11.06 |
명령형 코드 vs 선언형 코드 (0) | 2022.08.25 |