티스토리 뷰

필자는 xml로 설정하는 방식이 익숙한 사람이었는데 점점 이런 xml 파일로 설정하는 부분들이 없어지고 이는 다른 부분으로 대체가 되고 있다. java config라던지 application.yml 파일에 기존에 xml로 설정하던 부분들을 대체할 수 있게 되었고 사용하다보니 이것도 매우 편리했다. 얼마전에 MyBatis 관련된 설정도 application.yml 파일에서 설정을 했는데 이와 마찬가지 맥락으로 logback.xml (or logback-spring.xml) 파일에 대해서도 application.yml 파일에서 설정이 가능하다. 


AS-IS (logback-spring.xml)

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">

  <springProfile name="local">
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
      <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>[%d{HH:mm:ss.SSS}][%-5level][%logger{36}.%method:line%line] - %msg%n</pattern>
      </encoder>
    </appender>
		
    <logger name="org.springframework" level="info" additivity="false">
      <appender-ref ref="console" />
    </logger>
		
    <root level="debug">
      <appender-ref ref="console" />
    </root>
  </springProfile>
	
  <springProfile name="dev">
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>logs/abc.log</file>
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>/logs/abc.%d{yyyy-MM-dd}.log</fileNamePattern>
	    <maxHistory>30</maxHistory>
      </rollingPolicy>
      <encoder>
        <pattern>[%d{HH:mm:ss.SSS}][%-5level][%logger.%method:line%line] - %msg%n</pattern>
      </encoder>
    </appender>	
		
    <logger name="org.springframework" level="info" additivity="false">
      <appender-ref ref="file" />
    </logger>
		
    <root level="info">
      <appender-ref ref="file" />
    </root>
  </springProfile>
</configuration>	

logback 설정을 하는 xml 이다. 이 부분들은 다음 Common Application Properties 를 참고해 application.yml (or application.properties) 로 변경할 수 있다.

 

 

Key Default Value Description
logging.charset.console Charset to use for console output.  
logging.charset.file Charset to use for file output.  
logging.config Location of the logging configuration file. For instance, `classpath:logback.xml` for Logback.  
logging.exception-conversion-word %wEx Conversion word used when logging exceptions.
logging.file.name Log file name (for instance, `myapp.log`). Names can be an exact location or relative to the current directory.  
logging.file.path Location of the log file. For instance, `/var/log`.  
logging.group.* Log groups to quickly change multiple loggers at the same time. For instance, `logging.group.db=org.hibernate,org.springframework.jdbc`.  
logging.level.* Log levels severity mapping. For instance, `logging.level.org.springframework=DEBUG`.  
logging.logback.rollingpolicy.clean-history-on-start false Whether to clean the archive log files on startup.
logging.logback.rollingpolicy.file-name-pattern ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz Pattern for rolled-over log file names.
logging.logback.rollingpolicy.max-file-size 10MB Maximum log file size.
logging.logback.rollingpolicy.max-history 7 Maximum number of days archive log files are kept.
logging.logback.rollingpolicy.total-size-cap 0B Total size of log backups to be kept.
logging.pattern.console %clr(%d{${LOG_DATEFORMAT_PATTERN:-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} Appender pattern for output to the console. Supported only with the default Logback setup.
logging.pattern.dateformat yyyy-MM-dd HH:mm:ss.SSS Appender pattern for log date format. Supported only with the default Logback setup.
logging.pattern.file %d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} Appender pattern for output to a file. Supported only with the default Logback setup.
logging.pattern.level %5p Appender pattern for log level. Supported only with the default Logback setup.
logging.register-shutdown-hook false Register a shutdown hook for the logging system when it is initialized.

참고 : docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties-core

 

이런 표를 토대로 매핑을 시켜보면 다음과 같이 application.yml 로 변경을 시킬 수 있다. 

 

2021.07.02 수정

다른 기능은 문제가 없었으나 rolling-file-name이 spring docs에 있는 내용으로 해도 정상동작을 하지 않았다. rolling-file-name을 동작하게 하려면 다음과 같이 사용해야 한다. 

 

TO-BE (application.yml)

spring:
  profiles: local
  
logging:
  pattern:
    console: "[%d{HH:mm:ss.SSS}][%-5level][%logger.%method:line%line] - %msg%n"
  level:
    org:
      springframework: DEBUG
      
---

spring:
  profiles: dev
  
logging:
  pattern:
    file: "[%d{HH:mm:ss.SSS}][%-5level][%logger.%method:line%line] - %msg%n"
    rolling-file-name: "/logs/abc.%d{yyyy-MM-dd}.%i"
  file:
    name: /logs/abc.log
    max-history: 30
  level:
    org:
      springframework: INFO    
    

이렇게 logback.xml 파일에서 정의해서 사용했던 내용들을 springboot의 application.yml 파일에서 간단히 전환할 수 있다.

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30