로그는 애플리케이션의 작동 방식을 이해하는 데 필수적입니다. 로그를 분석하는 것은 무엇이 잘못되었는지 가장 빨리 감지하는 방법입니다. 모범 사례를 따르면 로그에서 더 많은 가치를 얻을 수 있고 사용하기 쉽게 만들 수 있습니다.
📌 표준 로깅 라이브러리 사용
로깅을 여러 가지 방법으로 수행할 수 있지만, Log4j, Logback과 같은 표준 로깅 라이브러리를 사용하는 것이 좋습니다.
📌 Appenders 현명하게 선택
Appenders는 다양한 대상에 로그 메시지를 작성하는 역할을 합니다. 특정 사례에 따라 Appenders를 현명하게 선택하는 것이 중요합니다. 예를 들어, 로그를 오랫동안 저장해야 하는 경우 데이터베이스를 선택할 수 있습니다.
📌 의미 있는 메시지 사용
"Error hurved"(오류 발생) 대신 "Failed to database"(데이터베이스에 연결하지 못함)을 기록하는 것이 좋습니다.
📌 로그 메시지 형식 지정 및 구조화
- 각 메시지에 대해 일관되고 명확한 패턴사용
- 표준 날짜 및 시간 형식(ISO 8601) 사용
- 공통 구분 기호(공백 또는 세미콜론)를 사용하여 서로 다른 필드 구분
- JSON을 사용하여 중첩된 데이터 표시
- 문자열 연결(+) 대신 매개 변수화된 메시지({})를 사용
📌 로깅 필터 및 인터셉터 구현
로깅 필터 및 인터셉터를 사용하여 다음과 같은 다양한 로깅 기능을 구현할 수 있습니다.
- 요청 및 응답 세부 정보 기록
- REST API의 실행 시간 및 성능 메트릭 기록
- 발생하는 예외 및 오류 기록
- 인증 및 권한 정보 기록
- 비즈니스 로직 및 유효성 검사 기록
📌 민감한 정보는 마스킹 및 암호화
- 정규식 또는 패턴을 사용하여 민감한 데이터를 별표(*)로 변경
- 해싱 또는 암호화 알고리즘을 사용해 중요한 데이터를 읽을 수 없는 문자열로 변환
📌 적절한 로그 레벨 사용
📌 관련된 모든 것 로깅
📌 JSON 포맷 사용
📌 로그 파일 갱신 및 보관
로그 파일은 시간이 지남에 따라 매우 커지고 디스크 공간이 많이 소모될 수 있습니다. 로그 파일의 크기와 수를 관리하기 위해 주기적으로 변경하고 보관해야 합니다.
- 시간대별 갱신: 일정한 시간 간격을 기준으로 로그 파일 갱신
- 크기별 갱신: 일정한 크기를 기준으로 로그 파일 갱신
- 하이브리드 갱신: 시간과 크기 기준을 기준으로 로그 파일 갱신
- 압축: 로그 파일의 크기를 줄이기 위해 갱신 후 압축
- 삭제: 일정 시간이 경과한 후 또는 일정 수의 파일에 도달한 경우 이전 로그 파일 삭제