STUDY/Spring
Spring Boot | logback 설정
개미606
2021. 5. 18. 13:22
Logback
Logback
은spring-boot-starter-web
에 포함되어 있기 때문에, 해당 의존성이 추가되어있다면 따로 추가할 필요가 없다.application.properties
파일에loggin.level
을 이용해 로깅 설정을 변경할 수 있다.- 로깅 시스템의 세분화된 설정을 위해 보통
logback.xml
파일로 설정하며, 스프링 부트에서는logback-spring.xml
을 사용할 것을 권장한다. - Logback은 프로그래밍 방식, XML, Groovy 방식으로 구성할 수 있다.
- Logback 0.9.17버전부터 대소문자를 구분하지 않는다.
logback-spring.xml 파일 생성
<configuration></configuration>
사이에 Logback 세부 설정을 추가하면 된다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>
appender
로그의 형태를 설정하고, 로그 메시지를 어디(콘솔 혹은 파일)에 출력할지 설정한다.
아래의 설정은 STDOUT
이라는 식별자로 <appender>
를 설정하고, ch.qos.logback.core.ConsoleAppender
클래스 설정을 통해 콘솔에 로그를 출력하겠다는 뜻이다.
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
</appender>
appender
의 종류는 여러가지가 있다. logback appender
- ConsoleAppender : 콘솔에 로그를 찍는다.
- FileAppender : 파일에 로그를 찍는다.
- RollingFileAppender : FileAppender를 상속, 여러 파일로 순회하여 로그를 찍는다. (지정 용량을 초과하면 새로운 파일로..)
- SMTPAppender : 로그를 찍어서 이메일로 전송
- DBAppender : 로그이벤트를 데이터베이스 테이블에 insert한다.
- ETC : SyslogAppender, SiftingAppende
로그의 패턴을 설정할 때는 <pattern>
태그를 사용한다.
아래처럼 <encoder>
태그 안에 <pattern>
태그를 정의한 뒤, 로그의 출력 패턴을 설정할 수 있다.
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
패턴은 아래의 요소들로 작성할 수 있다.
%logger{length}
: 로거 네임 축약 length는 최대 길이를 지정한다.%-5level
: 로그 레벨.-5
는 고정폭 값을 설정한 것 (최대 5글자)%msg
: 로그 메시지${PID:-}
: 프로세스 아이디%d
: 시간%thread
: 현재 스레드 명%M
: 로그를 발생시킨 메서드 명
root와 logger
<root>
는 root logger를 설정한다. level
속성을 가지며, level
은 TRACE
, DEBUG
, INFO
, WARN
, ERROR
, ALL
혹은 OFF
의 값을 설정할 수 있다. 0개 이상의 <appender-ref>
요소를 포함해야 한다.<logger>
는 로거를 구성하는 요소로, name
이라는 필수 요소를 설정해야 하며 level
역시 설정 가능하다. additivity
는 root
설정을 상속받을지 여부를 설정하는 요소이다.
logback-spring.xml 작성해보기
ConsoleAppender
로 설정해 <appender>
를 작성한다.
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- ConsoleAppender == 콘솔에 로그 찍음 -->
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} %magenta([%thread]) %-5level %logger{36}.%M - %msg%n
</pattern>
</encoder>
</appender>
<root>
에 위에서 작성한 appender를 <appender-ref>
로 등록한다.
ref속성에는 appender의 name을 입력하면 된다.
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>