티스토리 뷰

오늘은 Spring Boot 에서 Logback 사용법에 대해 간략히 소개하겠습니다.


1. Logback 이란?

  • Logback 이란 SLF4J 의 구현체로, 스프링 부트의 기본으로 설정되어 있어 별도의 라이브러리를 추가할 필요 없습니다. 아래 패키지에 포함되어 있어 기본적으로 사용이 가능합니다.
implementation 'org.springframework.boot:spring-boot-starter'



2. Logback 설정파일

  • application.yml 파일에 직접적으로 경로를 지정하지 않았다면 resources 디렉토리에 logback-spring.xml 파일을 참조하게 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- Spring Boot 프로퍼티 참조를 위해 <springProperty> 추가 -->
  <springProperty scope="context" name="spring.log.file-path" source="spring.log.file-path"/>

  <property name="CONSOLE_LOG_PATTERN" value="%boldMagenta(%d{MM-dd HH:mm:ss}) [%boldYellow(%-5level)] %cyan(%logger{5}.%M) - %msg %n" />
  <property name="FILE_LOG_PATTERN" value="%d{YYYY-MM-dd HH:mm:ss.SSS} [%thread] %5level %logger - %msg%n" />

  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>${CONSOLE_LOG_PATTERN}</pattern>
    </encoder>
  </appender>

  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${spring.log.file-path}</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <fileNamePattern>${spring.log.file-path}.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
      <maxHistory>90</maxHistory>
    </rollingPolicy>
    <encoder>
      <pattern>${FILE_LOG_PATTERN}</pattern>
      <ImmediateFlush>true</ImmediateFlush>
    </encoder>
  </appender>

  <logger name="org.mybatis" level="DEBUG" />

  <root level="info">
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="FILE" />
  </root>
</configuration>
  • 콘솔과 파일에 찍히는 로그 포맷을 각각 지정하여 줍니다. 

 

3. application.yml 설정

  • 위에 보이는 ${spring.log.file-path} 를 사용하기 위해서는 application.yml 파일에 프로퍼티를 입력하여야 하고 <springProperty> 태그를 추가하여야 합니다.
spring:
  config:
    activate:
      on-profile: "local"

  log:
    file-path: D:\logs\qrcode\qrcode.log
---
spring:
  config:
    activate:
      on-profile: "prod"

  log:
    file-path: /home/logs/qrcode/qrcode.log



4. log 사용

  • log를 사용하실땐 Logger 를 직접 작성하시거나 @Slf4J 어노테이션을 사용하시면 됩니다.
// LoggerFactory 사용
@Controller
public class QrCodeController {
  private final Logger log = LoggerFactory.getLogger(getClass());
    
  @GetMapping(value = {"/main", "/index", "/"})
  public String userMain(final Model model) {
    log.info("로그테스트");
    log.error("로그테스트 err");
    return "/views/index";
  }
}

또는 

// @Slf4j 사용
@Controller
@Slf4j
public class QrCodeController {
  @GetMapping(value = {"/main", "/index", "/"})
  public String userMain(final Model model) {
    log.info("로그테스트");
    log.error("로그테스트 err");
    return "/views/index";
  }
}




감사합니다.

최근에 올라온 글
Total
Today
Yesterday