상세 컨텐츠

본문 제목

[SpringBoot Logger] 로그 파일 생성 및 롤링

JAVA

by monad 2021. 8. 9. 19:03

본문

다음과 같이 예외가 발생하는 위치에 대해서는 로그를 기록합니다.

목적: 배포한 애플리케이션이 동작 중에 발생할 수 있는 에러를 기록
설정: 최종 배포 판에서는 설정 파일의 로그 레벨을 ERROR로 한다.
<root level="INFO"> → <root level="ERROR">

사용법:
1) import 할 패키지: or.sl4j.Logger, org.sl4j.LoggerFactory
2) Class 내부에 Logger 인스턴스 생성
private Logger logger = LoggerFactory.getLogger(클래스명.class);
3) Exception이 발생하는 영역에서 error 로그를 기록
logger.error(“error”, ex);

 

 

Spring Boot에서는 로거 관련 모듈을 기본으로 장착하고 있습니다.

SL4j는 Logback을 구현체로 사용합니다.

slf4j
logback

 

 

다음과 같이 org.slf4j.Logger와 org.slf4j.LoggerFactory를 import하고 LoggerFactory.getLogger(클래스명.class)를 통해서 로그를 작성할 수 있습니다.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Controller
public class BoardController {
    @Autowired
    private ServletContext context;

    private BoardService boardService;
    private FileService fileService;

    private Logger logger = LoggerFactory.getLogger(BoardController.class);
    
    @PostMapping("/post")
    public String write(@RequestParam("file") MultipartFile files, BoardDto boardDto){
      try {
       // ...
      }catch(Exception ex){
         logger.error("error:", ex);
      }
    }
    // ...
  }

 

CONSOLE에 표시되는 로그 메시지

 

로그 파일이 생성되게 하기 위해서는 다음과 같이 logback-spring.xml 파일을 생성합니다.

 

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!--로그 파일 저장 위치-->
    <property name="LOGS_PATH" value="./logs"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
        </layout>
    </appender>
    <appender name="SAMPLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="DAILY_ROLLING_FILE_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOGS_PATH}/logback.log</file>
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOGS_PATH}/logback.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the file size reaches 100MB -->
                <maxFileSize>100MB</maxFileSize>
                <!-- kb, mb, gb -->
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

    <logger name="com.gaeyou.firstproject" level="DEBUG">
        <appender-ref ref="SAMPLE" />
    </logger>
    <logger name="com.gaeyou.firstproject" level="INFO">
        <appender-ref ref="DAILY_ROLLING_FILE_APPENDER" />
    </logger>
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="DAILY_ROLLING_FILE_APPENDER" />
    </root>
</configuration>

파일 생성 위치는 다음을 참조

logs 폴더 위치

Ubuntu에서 톰켓을 패키지로 인스톨한 경우 logs는 다음을 가리키게됩니다.

var/lib/tomcat9/logs
/var/log/tomcat9

로그 파일 생성 위치(리눅스): /var/log/tomcat9/
(설정 파일 logback-spring.xml의 <property name="LOGS_PATH" value="./logs"/> 에서 .logs 가 가리키는 위치)

 

로그 파일 생성 위치(개발환경): 프로젝트 루트/logs

관련글 더보기

댓글 영역