spring boot logging 설정
저번에는 spring logging에 대해서 알아봤다.
이번에는 설정에 대해 알아볼려고 한다.
아래는 boot의 기본 설정으로 되어있는 로그 포맷이다.
2016-03-15 12:31:52.479 INFO 602 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-03-15 12:31:52.480 INFO 602 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-03-15 12:31:52.573 INFO 602 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2016-03-15 12:31:52.767 INFO 602 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2016-03-15 12:31:52.891 INFO 602 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-03-15 12:31:52.898 INFO 602 --- [ main] ication$$EnhancerBySpringCGLIB$$3dbc3010 : test
2016-03-15 12:31:52.901 INFO 602 --- [ main] com.example.DemoApplication : Started DemoApplication in 7.351 seconds (JVM running for 8.53)
첫 번째는 날짜와 시간
두 번째는 로그레벨
세 번째는 프로세스 ID
네 번째는 구분자
다섯 번째는 스레드 명
여섯 번째는 로그네임(클래스 네임) 잘 릴수도 있다 org.springframework.xxxxxx.xxxxxxxxxx.xxxx = o.s.x.x.x
마지막으로 로그메시지다.
스프링 부트의 기본적인 로그 레벨은
info
이다.
만약 어플리케이션을 실행 할때 바꾸고 싶다면
java -jar app.jar --debug
이렇게 디버그 레벨로 가능하다.
혹은 설정 자체를 하고 싶다면
application.properties
이나
application.yml
파일에 다음과 설정해도 된다.
debug: true
전부다 디버그가 아니라 특정 패키지에만 지정 하고 싶다면 이렇게 하면 된다.
logging.level.* (패키지명) : debug
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate= ERROR
com.example=ERROR
다음은 로그 파일에 대해 알아보자!
손쉽게 로그파일로 만들수 있다
logging.path
와
logging.file
프로파티로 설정 가능하다.
logging.path는 경로를 지정하면 된다. 파일명은
spring.log
로 생성된다.
logging.file은 파일 명을 설정해주면 된다. 디폴트는 루트에 저장된다.
두개 같이 쓰면 파일을 먼저 선택하는 듯 하다.
logging.pattern.console 과 logging.pattern.file 로 패턴을 지정 할 수 있다.
DefaultLogbackConfiguration 클래스를 보면 다음과 같이 설정 되어 있다.
private static final String CONSOLE_LOG_PATTERN = "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} "
+ "%clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} "
+ "%clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} "
+ "%clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}";
private static final String FILE_LOG_PATTERN = "%d{yyyy-MM-dd HH:mm:ss.SSS} "
+ "${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}";
만약에 ansi 터미널을 지원한다면 콘솔에 색상을 추가 할 수 있다.
인텔리j는 기본으로 되는듯 하다. 이클립스는 플러그인을 깔면 되는거 같은데 테스트를 해보지 않았다.
spring.output.ansi.enabled=always
이번에는 커스텀한 로그를 찍 을 수 있다.
classpath에 logback.xml 혹은 logback-spring.xml에 설정을 해두면 boot가 classpath에 있는 파일을 끌고 올라간다.
문서에는 .groovy도 된다고 한다. 하지만 잘모르기때문에 넘어간다.ㅎㅎㅎ
문서에보면 다음과 같이 있다.
로그 시스템 |
사용자 정의 파일 |
Logback |
logback-spring.xml, logback-spring.groovy, logback.xml or logback.groovy |
Log4j |
log4j-spring.properties, log4j-spring.xml, log4j.properties or log4j.xml |
Log4j2 |
log4j2-spring.xml or log4j2.xml |
JDK (Java Util Logging) |
logging.properties |
만약 커스텀한 로그파일의 위치를 변경하고 싶다면
logging.config
프로퍼티를 사용하면 된다.
예를 들어 /resources/logback/logback.xml 에 위치 하고 싶다면
logging.config=classpath:logback/logback.xml
다음과 같이 설정 할 수 있다.
spring boot logging 을 참고하여 이글을 작성하였다.