logback
11 Feb 2018Logback
- SLF4J의 구현체
- 스프링부트의 기본 설정(spring-boot-starter-web > spring-boot-starter-logging)에 추가되어 있다.
설정 파일
src/main/resources/ 아래에 설정 파일을 추가한다.
기본적으로 classpath에서 스프링부트가 읽어가는 파일 이름은 logback-spring.xml이다.
스프링부트의 환경설정에 따라 xml파일을 분리설정할 수 있다.
예)logback-local.xml, logback-prod.xml
logback-spring.xml 예시
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 스프링부트 기본 설정 -->
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<!-- 로그 경로 변수 선언 -->
<property name="LOG_DIR" value="${user.home}/logs/app" />
<property name="LOG_PATH" value="${LOG_DIR}/app.log"/>
<!-- Console Appender -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%-5level %d{HH:mm:ss.SSS} [%thread %F:%L] %method - %msg%n
</pattern>
</encoder>
</appender>
<!-- Rolling File Appender -->
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 파일 경로 -->
<file>${LOG_PATH}</file>
<!-- 출력패턴 -->
<encoder>
<pattern>%-5level %d{HH:mm:ss.SSS} [%thread %F:%L] %method - %msg%n</pattern>
</encoder>
<!-- Rolling 정책 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- .gz,.zip 등을 넣으면 자동으로 일자별 로그파일 압축 -->
<fileNamePattern>${LOG_DIR}/app_%d{yyyy-MM-dd}_%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 파일당 최고 용량 10MB -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 일자별 로그파일 최대 보관주기(일단위)
만약 해당 설정일 이상된 파일은 자동으로 제거-->
<maxHistory>60</maxHistory>
</rollingPolicy>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
<logger name="Mylog" level="DEBUG">
<appender-ref ref="ROLLING_FILE"/>
</logger>
</configuration>
- property: 전역변수 설정
- appender: 로그 파일의 출력 양식 설정
appender
로그 파일의 출력 양식을 지정한다.
주요 Appender 종류
이름 | 설명 |
---|---|
ConsoleAppender | 콘솔에 로그를 남김 |
FileAppender | 파일에 로그를 남김 gi |
RollingFileAppender | 여러개의 파일을 순회하면서 로그를 남김 |
SMTPAppender | 로그를 메일로 보냄 |
DBAppender | DB에 로그를 남김 |
AwsLogsAppender | AWS cloudwatch |
LogstashTcpSocketAppender | logstash |
root, logger
appender를 참조하여 로그 기능을 수행하는 객체
- name: String 또는 클래스명 형식
- 아래점(.)을 구분자로 사용하여 계층적으로 활용 할 수 있다.(com, com.myshop)
- Additivity: 상위 Logger로부터의 상속 여부를 의미한다
Reference
- http://logback.qos.ch/manual/
- https://coding-start.tistory.com/186
- https://thinkwarelab.wordpress.com/2016/11/18/java%EC%97%90%EC%84%9C-logback%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%A1%9C%EA%B9%85logging-%EC%82%AC%EC%9A%A9%EB%B2%95/
- https://dadadamarine.github.io/java/spring/2019/05/01/spring-logging-xml.html