SpringBoot - Logback 설정하기
logback?
Apache의 log4j 기반의 logging 라이브러리로 SpringBoot 프로젝트에는 logback이 기본적으로 포함되어 있어서
dependecy 추가없이 사용할 수 있으나,
개발환경에 맞는 설정파일을 추가해 주어야 한다.
logback은 ERROR > WARN > INFO > DEBUG > TRACE 5단계의 로그레벨을 가진다.
1. logback 설정파일 위치 지정하기
#fileName : application.properties
#로그파일 위치
logging.config=classpath:logging/logback.xml
2. logback.xml 설정파일 추가하기
resources > logging > logback.xml
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- 출력설정 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%-5level] %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
<!-- 패키지별 출력설정 -->
<logger name="com.onda" level="DEBUG" ></logger>
</configuration>
3. Controller 에서 로깅 추가하기
Java 코드
// HelloController.java
@RestController
public class HelloController {
private static final Logger log = LoggerFactory.getLogger(WelcomeController.class);
/**
* 객체를 Json 형식으로 변환한다.
* @return {"id":100,"name":"onda2me"}
*/
@GetMapping("api/user")
@ResponseBody
public User apiUser() {
User user = new User();
user.setId(100);
user.setName("onda2me");
/*
logback.xml에 INFO 레벨이 기본 출력 설정되어 있어서
DEBUG 레벨 출력을 원하는 패키지는 설정을 추가해 줘야한다.
<logger name="com.onda" level="DEBUG" ></logger>
*/
log.debug(user.toString()); // Debug Level
log.info(user.toString()); // Info Level
return user;
}
}
// User.java
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "User -> id:"+id+", name:"+name;
}
}
로깅 확인
4. logback 설정 커스트마이징
개발/운영 환경에 따라 설정정보를 다르게 설정할 수 있다.
#fileName : application.properties
#로그파일 위치
logging.config=classpath:logging/logback.xml
#환경에 따라 설정정보를 다르게 관리할 경우 (dev / prod)
spring.profiles.active = dev
<!-- fileName : logback.xml -->
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- 출력설정 : 콘솔 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%-5level] %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<!-- 출력설정 : 파일 -->
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/log.txt</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- Daily RollingFile -->
<fileNamePattern>log-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 기본출력 Level : INFO -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ROLLING"/>
</root>
<!-- dev env : debug 레벨이상 출력 -->
<springProfile name="dev">
<logger name="com.onda" level="DEBUG" ></logger>
</springProfile>
<!-- prod env : info 레벨이상 출력 -->
<springProfile name="prod">
<logger name="com.onda" level="INFO" ></logger>
</springProfile>
</configuration>
로깅 확인
댓글남기기