다음과 같이 예외가 발생하는 위치에 대해서는 로그를 기록합니다.
목적: 배포한 애플리케이션이 동작 중에 발생할 수 있는 에러를 기록
설정: 최종 배포 판에서는 설정 파일의 로그 레벨을 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을 구현체로 사용합니다.
다음과 같이 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);
}
}
// ...
}
로그 파일이 생성되게 하기 위해서는 다음과 같이 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>
파일 생성 위치는 다음을 참조
Ubuntu에서 톰켓을 패키지로 인스톨한 경우 logs는 다음을 가리키게됩니다.
로그 파일 생성 위치(리눅스): /var/log/tomcat9/
(설정 파일 logback-spring.xml의 <property name="LOGS_PATH" value="./logs"/> 에서 .logs 가 가리키는 위치)
로그 파일 생성 위치(개발환경): 프로젝트 루트/logs
[intellij] 폴더 또는 파일을 .gitignore에 추가하기 (0) | 2021.08.30 |
---|---|
Warning: String concatenation as argument to 'StringBuilder.append()' call (0) | 2021.08.20 |
[Intellij] Spring boot finished with no-zero exit value 1, [Jenkins]포트 변경 (0) | 2021.07.26 |
[IntelliJ]IntelliJ에서 Spring boot 설정 (0) | 2021.06.10 |
[DB] Cannot create JDBC driver of class 'net.sf.log4jdbc.DriverSpy' (0) | 2021.01.13 |
댓글 영역