[Spring-boot] Logging
Logging
spring-boot 은 기본적으로 Logback 이 로깅에 사용된다.
Logback 은 SLF4 J의 구현체이며 자바 오픈소스 로깅 프레임워크이다.
LogBack을 xml configration 이용할 때 3가지의 주요 설정이 있는데 다음과 같다.
-
Appender
로그 메시지를 출력할 대상을 결정함 (console , file, DB 등).
-
Encoder
로그 메시지의 포맷을 지정함.
-
Logger, root
appender를 읽어 로그를 출력할 package와 log level을 설정함.
상세 설정은(http://logback.qos.ch/manual/index.html) 참고
Example
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="chapters.configuration" level="INFO"/>
<!-- Strictly speaking, the level attribute is not necessary since -->
<!-- the level of the root level is set to DEBUG by default. -->
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>
예제를 분석해보자면
-
STDOUT의 ConsoleAppender 임으로 log를 콘솔 창에 출력
-
STDOUT의 로그 메시지의 출력 포맷은 % d {HH:mm:ss.SSS} [% thread] %-5 level % logger {36} - % msg% n 다음과 같음.
-
chapters.configuration 패키지의 로그를 INFO 레벨로 출력.
-
전체 패키지(root)는 STDOUT appender를 참고하여 DEBUG 레벨로 로그 출력.
이제 Spring-boot에서 LogBack을 설정하는 방법을 알아보자.
spring-boot에서는 application.properties 에서 간단히 설정이 가능하다.
-
패키지별 로그 레벨 수준 설정
logging.level.{FQCN} = {level}
ex) logging.level.root = info (전체 로깅 레벨 INFO)
ex) logging.level.com.jaejoon.dao = debug (특정 패키지 로깅 레벨 DEBUG)
-
로그 파일 출력 설정
-
로그 파일 회전 설정.
이름 기술 logging.logback.rollingpolicy.file-name-pattern
로그 저장소를 만드는 데 사용되는 파일 이름 패턴입니다. logging.logback.rollingpolicy.clean-history-on-start
애플리케이션이 시작될 때 로그 아카이브 정리가 발생해야 하는 경우. logging.logback.rollingpolicy.max-file-size
보관되기 전 로그 파일의 최대 크기입니다. logging.logback.rollingpolicy.total-size-cap
로그 아카이브를 삭제할 수 있는 최대 크기입니다. logging.logback.rollingpolicy.max-history
로그 아카이브 보관 일수 (기본값 : 7)
위의 설정을 응용하면 이런 식으로 구성할 수 있다.
local_path =C:/Users/dkans/Desktop/logs/
logging.level.root=debug
logging.file.name=${local_path}myapp.log
logging.logback.rollingpolicy.max-history=1000
logging.logback.rollingpolicy.max-file-size=4KB
logging.logback.rollingpolicy.file-name-pattern=${logging.file.name}.%d{yyyy-MM-dd}.%i.text
로그 결과물
커스텀 로그 설정 파일 사용하기
loSpring-boot는 classpath에 있는 logback-spring.xml을 참조한다.
즉 resources 디렉터리 아래에 logback-spring.xml 파일을 생성해주면 된다.
주의) application.properties 파일에 있는 log 설정이 먼저 설정하고 다시 logback-spring.xml이 설정되기 때문에
application.properties 파일에 log설정은 적용되지 않습니다.
따라서 logback-spring.xml 에 다음과 같이 설정하면 프로퍼티들을 가져다가 사용할 수 있음.
profile 별로 사용할 로그 프로퍼티 파일을 정의 후
logback-spring.xml 에서 다음과 같이 작성해보자.
<springProfile name="{profileName}">
<property resource="{적용할 profile name}"/>
</springProfile>
<property name ="{사용할 변수명}" value="${적용할 profile 에 들어있는 key 값}"/>
이런 식으로 작성하면 프로퍼티들을 가져다가 적용할 수 있다.
logback.xml 설정은 위에서 설명했으니 생략.