[java] SLF4J에서 로깅 포맷 변경하기

SLF4J (Simple Logging Facade for Java)은 자바 애플리케이션에서 로깅을 단순화하기 위한 인터페이스입니다. 이를 사용하여 로깅을 구현하기 위해 일반적으로 Logback, Log4j 등과 같은 백엔드 로깅 시스템을 선택합니다. 이번에는 SLF4J에서 로깅 메시지의 포맷을 변경하는 방법에 대해 알아보겠습니다.

Logback 설정 파일 변경

SLF4J를 사용하여 로깅을 하는 경우, 기본적으로 Logback을 설정 파일로 사용합니다. 따라서 로깅 포맷을 변경하기 위해서는 Logback 설정 파일을 수정해야 합니다. Logback 설정 파일의 위치는 일반적으로 classpath의 logback.xml 혹은 logback.groovy입니다.

먼저, Logback 설정 파일을 열어서 로깅 포맷을 변경하고자 하는 appender 섹션을 찾아봅니다. 각 appender는 로깅 이벤트를 특정한 대상으로 출력하는 역할을 합니다. 예를 들어, ConsoleAppender는 로그를 콘솔에 출력하고, FileAppender는 로그를 파일에 저장합니다.

특정 appender를 찾았다면, 해당 appender의 <layout> 요소를 수정하여 로깅 포맷을 변경할 수 있습니다. 보통 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n와 같은 패턴을 사용하여 로깅 포맷을 지정할 수 있습니다.

예시로, 로그 메시지에 클래스의 이름을 포함하도록 포맷을 변경하고 싶다면, <layout> 요소를 아래와 같이 수정할 수 있습니다.

<layout class="ch.qos.logback.classic.PatternLayout">
  <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</layout>

Log4j 설정 파일 변경

SLF4J를 사용하는 경우, Log4j 1.x 백엔드를 사용할 수도 있습니다. Log4j 1.x를 사용한다면, Log4j의 설정 파일을 수정하여 로깅 포맷을 변경할 수 있습니다. Log4j의 설정 파일은 주로 log4j.properties 또는 log4j.xml로 알려져 있습니다.

이 경우에도, 설정 파일을 열어서 로깅 포맷을 변경하고자 하는 appender를 찾아야 합니다. 각 appender는 Log4j에서 로그 이벤트를 처리하는 구성 요소입니다.

appender를 찾았다면, 해당 appender의 layout 속성을 수정하여 로깅 포맷을 변경할 수 있습니다. 예를 들어, %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p %c{36} - %m%n와 같은 패턴을 사용하여 로깅 포맷을 지정할 수 있습니다.

예시로, 로그 메시지에 클래스의 이름을 포함하도록 포맷을 변경하고 싶다면, log4j.properties 파일에서 아래와 같이 수정할 수 있습니다.

log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5p %c{36} - %m%n

변경 내용 확인하기

Logback 또는 Log4j 설정 파일을 변경한 후에는, 애플리케이션을 다시 시작하여 변경된 로깅 포맷이 적용되는지 확인해야 합니다. 로그 메시지가 예상한 대로 포맷되는지 확인하고, 필요에 따라 추가적인 조정이 필요할 수 있습니다.

마무리

이번 글에서는 SLF4J에서 로깅 포맷을 변경하는 방법에 대해 알아보았습니다. Logback 또는 Log4j 설정 파일을 수정하여 원하는 로깅 포맷을 지정할 수 있습니다. 로깅 포맷을 변경함으로써 애플리케이션의 로그를 더욱 가독성 있게 만들 수 있습니다.