ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • spring boot logging 설정
    카테고리 없음 2023. 4. 18. 14:43

    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.pathlogging.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
    
    spring-boot-ansi 이번에는 커스텀한 로그를 찍 을 수 있다. 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 을 참고하여 이글을 작성하였다.

    댓글

Designed by Tistory.