Spring Boot의 로깅 설정
다음은 Spring Boot에서 지원하는 로깅 설정입니다. Spring Boot 버전에 따라서 다를 수 있습니다.
Trace 모드 적용
다음은 --trace 옵션을 추가함으로써 Trace 레벨로 실행할 수 있습니다.
# java -jar target/spring-boot-logging-0.0.1-SNAPSHOT.jar --trace
파라미터로 Lgoging Level 변경
다음과 같이 -D 옵션을 이용하면 특정 패키지의 로깅 레벨을 변경할 수 있습니다.
-Dlogging.level.org.springframework=TRACE -Dlogging.level.io.datadynamics=TRACE
application.yml
파일로 Logging 설정
이 방식은 Logback용 로깅 설정 파일을 별도로 두지 않는 방식으로 간단하게 적용할 수 있습니다.
logging: level: root: ERROR org.springframework.web: ERROR io.datadynamics: DEBUG org.hibernate: ERROR
또한 기타 설정을 통해서 다음과 같이 파일명, 패턴 등을 지정할 수 있습니다.
logging: file: logs/application-debug.log pattern: console: "%d %-5level %logger : %msg%n" file: "%d %-5level [%thread] %logger : %msg%n" level: org.springframework.web: ERROR io.datadynamics: DEBUG org.hibernate: ERROR
터미널이 ANSI Color를 지원하면 다음의 설정을 이용하여 ANSI Color 적용 여부를 설정할 수 있습니다.
spring: output: ansi: enabled: DETECT
다음은 Boot의 Logging 설정시 Group을 지정한 예제입니다.
################### ## Logging ################### logging: level: root: INFO tomcat: INFO freemarker: INFO jdbc.connection: WARN jdbc.audit: WARN jdbc.sqlonly: WARN jdbc.resultset: WARN jdbc.resultsettable: DEBUG org.hibernate: INFO org.springframework: INFO org.springframework.session: WARN io.datadynamics: DEBUG org.apache: INFO com.zaxxer: INFO group: tomcat: org.apache.catalina, org.apache.coyote, org.apache.tomcat
Logback 설정 파일로 Logging 설정
Spring Boot의 기본 로깅 Logback 설정 파일
Spring Boot는 다음의 파일에 대해서 기본 로깅 설정 파일로 사용하므로 파일이 있는 경우 로딩하여 적용합니다. 따라서 아래 파일명을 사용하는 경우 운영 환경에서 별도의 로깅 설정을 적용할 때 문제가 발생할 수 있으므로 사용시 다양한 측면을 고려해야 합니다.
- logback-spring.xml
- logback.xml
- logback-spring.groovy
- logback.groovy
Logback XML 파일 작성하기
파일명 주의
Logback 설정 파일의 파일명을 logback.xml
파일로 사용하면 Spring Boot Application JAR 파일을 실행할 때 외부에서 옵션을 통해서 Logback 설정 파일을 변경하고자 하는 경우 적용되지 않을 수 있습니다. 따라서 Logback 설정 파일은 logback-local.xml
등의 파일명으로 변경해서 사용해야 합니다.
application.yml
파일에 다음과 같이 Logback 설정 파일의 위치를 지정합니다. application.yml
파일을 실행시 별도로 지정하고 싶은 경우 --spring.config.location=application-prod.yml
등의 형식을 Spring Boot Application JAR 파일의 인자로 지정하게 되면 실행 환경에 맞춰서 다양한 로깅 설정을 할 수 있습니다.
logging: config: classpath:/logback-local.xml → logback.xml로 파일명을 사용하지 않도록 합니다.
Logback 설정 파일을 logback-local.xml
으로 작성합니다.
<?xml version="1.0" encoding="UTF-8"?> <configuration> <jmxConfigurator/> <property name="CONSOLE_LOG_PATTERN_DEBUG" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%c:%L]){cyan} %clr(:){faint} %m%n%wex"/> <property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%c:%L]){cyan} %clr(:){faint} %m%n%wex"/> <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } [%t] --- %-40.40logger{39} : %m%n%wex"/> <property name="MONITORING_LOG_PATTERN" value="[${PID:- }] [%d{yyyyMMdd-HHmmssSSS}] %m%n%wex"/> <property name="LAUNCHER_LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${java.io.tmpdir:-.}/}launcher.log}"/> <property name="MONITORING_LOG_FILE" value="./launcher-monitoring.log"/> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${CONSOLE_LOG_PATTERN_DEBUG}</pattern> </encoder> </appender> <appender name="DEBUG_LEVEL_REMAPPER" class="org.springframework.boot.logging.logback.LevelRemappingAppender"> <destinationLogger>org.springframework.boot</destinationLogger> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> <file>${LAUNCHER_LOG_FILE}</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${LAUNCHER_LOG_FILE}.%i</fileNamePattern> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <appender name="MONITORING" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${MONITORING_LOG_PATTERN}</pattern> </encoder> <file>${MONITORING_LOG_FILE}</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>${MONITORING_LOG_FILE}.%i</fileNamePattern> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>100MB</MaxFileSize> </triggeringPolicy> </appender> <logger name="io.datadynamics" level="DEBUG"/> <logger name="laucher.monitoring" level="INFO"> <appender-ref ref="MONITORING"/> </logger> <logger name="org.hibernate.validator.internal.util.Version" level="WARN"/> <logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/> <logger name="org.crsh.plugin" level="WARN"/> <logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/> <logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/> <logger name="org.springframework" level="INFO"/> <logger name="org.hibernate" level="INFO"/> <logger name="org.quartz" level="INFO"/> <logger name="com.mchange" level="INFO"/> <logger name="jdbc.sqlonly" level="DEBUG"/> <logger name="jdbc.sqltiming" level="DEBUG"/> <logger name="jdbc.resultset" level="DEBUG"/> <logger name="jdbc.audit" level="WARN"/> <logger name="jdbc.connection" level="WARN"/> <logger name="log4jdbc.debug" level="WARN"/> <root level="DEBUG"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </root> </configuration>
운영 환경에 적용하려면 CentOS 서비스 등록하기를 참고하십시오.
1 Comment
Edward
May 17, 2020Fully Qualified Class Name이 표시되는 아주 간단한 Logback 설정