Spring Logging
1. 로깅
시스템을 작동할 때 시스템의 작동 상태의 보존, 이용자의 습성 조사 및 시스템 동작의 분석 등을 하기 위해 작동 중의 각종 정보를 기록해둘 필요가 있다. 이 기록을 만드는 것을 로깅이라 한다. 즉 로그 시스템의 사용에 관계된 일련의 사건을 시간의 경과에 따라 기록하는 것이다
- 네이버 지식백과 : 로깅
시스템을 작동할 때 시스템의 작동 상태의 보존, 이용자의 습성 조사 및 시스템 동작의 분석 등을 하기 위해 작동 중의 각종 정보를 기록해둘 필요가 있다. 이 기록을 만드는 것을 로깅이라 한다. 즉 로그 시스템의 사용에 관계된 일련의 사건을 시간의 경과에 따라 기록하는 것이다
- 네이버 지식백과 : 로깅
자바에는 다양한 로깅 프레임워크가 있다.
- java.util.logging
- Apache Commons Logging
- Log4J
- Logback => 가장 많이 사용한다
2. SLF4J
Simple Logging Facade for java
-
로깅 프레임워크들을 추상해 놓은 프레임워크. Facade 패턴을 사용한다
-
SLF4J의 바인딩 모듈을 통해 다양한 로깅 프레임워크를 지원한다
-
로깅 프레임워크 설정만 바꾸면 코드의 변경 없이 바꿀 수 있다
Simple Logging Facade for java
로깅 프레임워크들을 추상해 놓은 프레임워크. Facade 패턴을 사용한다
SLF4J의 바인딩 모듈을 통해 다양한 로깅 프레임워크를 지원한다
로깅 프레임워크 설정만 바꾸면 코드의 변경 없이 바꿀 수 있다
3. 로그 레벨
-
각 로그는 레벨이 주어진다
-
로그 레벨을 설정해 원하는 수준의 로그만 표시할 수 있다
각 로그는 레벨이 주어진다
로그 레벨을 설정해 원하는 수준의 로그만 표시할 수 있다
4. SLF4J Logger 사용하기
4-1) logger 선언 및 생성
// 로거 선언 및 생성
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
// 클래스의 canonical 이름을 주입해 패키지 수준에 따른 로깅 설정, 확인 등도 가능하다
final Logger log = new LoggerFactory.getLogger(this.getClass());
- 로거는 한번 생성하면 보안상 바꿀 수 없도록 보통 final로 선언해준다
4-2) log 찍기
// log.로그레벨(메시지);
log.info("this is a info log");
log.error("error -> {}", error);
5. Logback 설정하기
-
Logback은 다음 순서대로 설정을 찾는다. 설정 파일이 없을 시 다음 우선순위 설정 파일을 찾는 방식이다. 문법을 외울 필요는 없지만, 혼자 찾아보며 수정을 할 수 있도록 익숙해지자
-
Logback 설정 문서 : http://logback.qos.ch/manual/configuration.html
- logback-test.xml
- logback.groovy
- logback.xml
- 기본 설정
5-1) 기본적인 콘솔 logger 설정 예시
<!-- src.main.resources.logback.xml -->
<configuration>
<property name="CONSOLE_LOG_PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<logger name="org.package.SomeClass" level="info"/>
<root level="warn">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
<property>
변수를 선언하듯 속성을 설정
<appender>
어디에 어떤 포멧으로 로그를 남길지 설정
<logger>
로거의 위치에 따른 설정
<root>
루트 로거 설정
5-2) 로그에 색깔 추가하기
- 패턴을 통해 로그의 형태를 자유롭게 설정 가능하다 :
http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout
- 색상을 주려면
%색상(서브패턴)
으로 추가할 수 있다
%highlight
을 레벨에 적용해 레벨마다 색상이 다르게 할 수 있다
// 시간을 빨간색으로 표시하기
%red(%d{HH:mm:ss.SSS}) [%thread] %highlight(%-5level) %logger{36} - %msg%n
5-3) File Appender 추가하기
- 지정한 위치의 파일에 로그를 남기는 File Appender를 추가할 수 있다
- 파일에 저장할 때는 색상이 깨져 추가하지 않는다
- 단일 파일에 로그를 남기면 너무 커지고 관리가 어려워 잘 사용하지 않는다
<property name="FILE_LOG_PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/${bySecond}}.log</file>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="warn">
<appender-ref ref="FILE"/>
</root>
5-4) Rolling File Appender 추가하기
- 날짜, 용량과 같이 특정 설정에 따라 로그 파일을 생성하고 저장하도록 할 수 있다
- 아래는 날짜를 기준으로 rolling하는 appender를 설정했다
<property name="FILE_LOG_PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 오늘의 로그는 access.log 파일에 저장 -->
<file>logs/access.log</file>
<!-- 날짜를 기준으로 rolling 하도록 설정 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/access-%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="warn">
<appender-ref ref="ROLLING_FILE"/>
</root>
Author And Source
이 문제에 관하여(Spring Logging), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@sangmin7648/Spring-Logging
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// 로거 선언 및 생성
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
// 클래스의 canonical 이름을 주입해 패키지 수준에 따른 로깅 설정, 확인 등도 가능하다
final Logger log = new LoggerFactory.getLogger(this.getClass());
// log.로그레벨(메시지);
log.info("this is a info log");
log.error("error -> {}", error);
-
Logback은 다음 순서대로 설정을 찾는다. 설정 파일이 없을 시 다음 우선순위 설정 파일을 찾는 방식이다. 문법을 외울 필요는 없지만, 혼자 찾아보며 수정을 할 수 있도록 익숙해지자
-
Logback 설정 문서 : http://logback.qos.ch/manual/configuration.html
- logback-test.xml
- logback.groovy
- logback.xml
- 기본 설정
5-1) 기본적인 콘솔 logger 설정 예시
<!-- src.main.resources.logback.xml -->
<configuration>
<property name="CONSOLE_LOG_PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<logger name="org.package.SomeClass" level="info"/>
<root level="warn">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
<property>
변수를 선언하듯 속성을 설정<appender>
어디에 어떤 포멧으로 로그를 남길지 설정<logger>
로거의 위치에 따른 설정<root>
루트 로거 설정
5-2) 로그에 색깔 추가하기
- 패턴을 통해 로그의 형태를 자유롭게 설정 가능하다 :
http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout - 색상을 주려면
%색상(서브패턴)
으로 추가할 수 있다 %highlight
을 레벨에 적용해 레벨마다 색상이 다르게 할 수 있다
// 시간을 빨간색으로 표시하기
%red(%d{HH:mm:ss.SSS}) [%thread] %highlight(%-5level) %logger{36} - %msg%n
5-3) File Appender 추가하기
- 지정한 위치의 파일에 로그를 남기는 File Appender를 추가할 수 있다
- 파일에 저장할 때는 색상이 깨져 추가하지 않는다
- 단일 파일에 로그를 남기면 너무 커지고 관리가 어려워 잘 사용하지 않는다
<property name="FILE_LOG_PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/${bySecond}}.log</file>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="warn">
<appender-ref ref="FILE"/>
</root>
5-4) Rolling File Appender 추가하기
- 날짜, 용량과 같이 특정 설정에 따라 로그 파일을 생성하고 저장하도록 할 수 있다
- 아래는 날짜를 기준으로 rolling하는 appender를 설정했다
<property name="FILE_LOG_PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 오늘의 로그는 access.log 파일에 저장 -->
<file>logs/access.log</file>
<!-- 날짜를 기준으로 rolling 하도록 설정 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/access-%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="warn">
<appender-ref ref="ROLLING_FILE"/>
</root>
Author And Source
이 문제에 관하여(Spring Logging), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sangmin7648/Spring-Logging저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)