로깅 퍼사드

로깅 퍼사드는 로거의 API를 추상화해놓은 인터페이스이다. 대표적으로 Commons LogginSLF4j가 있다. 로거를 바로 사용하지 않고 퍼사드를 사용하면 로거를 자유롭게 교체할 수 있게 된다. 스프링 코어가 만들어질 당시, SLF4j가 없었고 Commons Loggin를 사용하고 있었기 떄문에 스프링에서는 기본적으로 Commons Loggin를 사용한다.

스프링부트 1.0 에는 스프링 코어에서 Commons Loggin를 빼고 SLF4j를 끼워넣는 설정이 있었다. 하지만 스프링5에 들어오면서 Spring-JCL 모듈이 추가되었다. Spring-JCL는 별도의 작업없이 Commons Loggin 코드를 컴파일 시점에 SLF4j나 Log4j2로 변경할 수 있는 기능을 가진 모듈이다. Spring-JCL가 개입하면서 Commons Loggin가 SLF4j 혹은 Log4j2로 가게된다. 마지막으로 의존성에 따라 로거를 선택하게 된다.

스프링부트는 Commons Loggin를 사용하지만 SLF4j를 거쳐 최종적으로 Logback을 사용하게 된다.

스프링부트 로깅

기본 포멧은 "날짜 시간 로그레벨 PID [스레드 이름] full-class-name : 메시지" 이다.

  • –debug
    • VM Option. 일부 핵심 라이브러리만 디버깅 모드로 출력한다.
  • –trace
    • VM Option. 전부 다 디버깅 모드로 출력한다.
  • spring.output.ansi.enabled
    • 애플리케이션 프로퍼티즈. 로그를 컬러풀하게 출력한다.
  • logging.file 또는 logging.path
    • 애플리케이션 프로퍼티즈. 로그를 파일에 출력한다.
  • logging.level.패지키 = 로그 레벨
    • 애플리케이션 프로퍼티즈. 로그 레벨을 조정한다.
    • 패키지는 자신의 어플리케이션뿐만 아니라 다른 모듈의 패키지도 지정할 수 있다.

커스터마이징

Logback은 logback-spring.xml 파일을 생성하여 커스터마이징 할 수 있다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<include resource="org/springframework/boot/logging/logback/base.xml"/>
	<logger name="me.whiteship" level="DEBUG"/>
</configuration>

Profile-specific Properties 에는 특정한 profile에서 log 설정을 사용하는 방법이 설명되어 있다.

Configure Log4j for Logging 에는 Logback을 Log4j2로 변경하는 방법이 설명되어 있다. 의존성 파일에서 spring-boot-starter-logging을 제외하고 spring-boot-starter-log4j2를 추가하면 된다. Log4j2로 변경한 경우 log4j2-spring.xml 파일을 이용하여 커스터마이징해야 한다.

해당 포스팅은 스프링 부트 개념과 활용 강의 내용을 토대로 작성하였습니다.