Logging
- Spring Web Application의 실행기록을 작성하는 방법
Slf4j 인터페이스 기반의 오픈소스 라이브러리 사용.
-- Log4j
-- Logback
Application Log는 다음 이유로 반드시 필요하다.
불과 몇 년 전 까지만 해도 Log4J 를 사용했지만 보안취약점이 발견됨에 따라 Logback 으로 전환하는 사례가 많아졌다.
Spring Boot에서 Logback 라이브러리가 기본 포함되어 있어서 별도의 라이브러리 추가는 필요 없다.
설정
https://logback.qos.ch/manual/ 에서 설정 방법 확인
xml 파일에 작성
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
<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} -%kvp- %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>C:/logs/hellospring.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>C:/logs/hellospring.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} -%kvp- %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
Logback의 Log Pattern
Trace > Debug > Info > Warn > Error
일반적으로 Debug와 Info를 많이 사용한다.
개발할때에는 debug / 오픈할때는 info
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
Log에는 DEBUG, INFO, WARN, ERROR만 보인다.
파일이 변경 감지가 되었을 때 서버가 자동으로 재기동 되는 것 방지 하는 검사
<!-- logback 설정
scan: logback 설정 파일 변경 검사 여부
scanPeriod: 몇 초 주기로 변경 검사를 시행할 것인지 설정 -->
<configuration scan="true" scanPeriod="30 seconds">
<appender>
...생략
logging 으로 바뀌는 설정
system.out.println(); ==> logging.info / logging.debug
printStackTrace ==> logger.error(e.getMessage(), e);
상단에 작성 후 모든 system.out.println(); 부분을 바꾼다.