■ LEVEL
TRACE > DEBUG > INFO > WARN > ERROR > FATAL
-. FATAL : 크리티컬한 오류 표시
-. ERROR : 요청을 처리하는 중 오류 표시.
-. WARN : 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지.
-. INFO : 상태변경과 같은 정보성 로그 표시.
-. DEBUG : 프로그램을 디버깅하기 위한 정보 표시.
-. TRACE : 추적 레벨은 Debug보다 상세한 정보 표시. (경로추적)
※ 상위 LEVEL의 경우 표기 안됨
INFO 레벨로 지정하면 INFO, WARN, ERROR 로그가 찍히고, WARN 레벨로 지정하면 WARN, ERROR 로그가 찍힌다.
■ APPENDER
로그를 출력 할 위치, 출력 형식 등을 설정
1) ConsoleAppender ( ch.qos.logback.core.ConsoleAppender )
– 로그를 OutputStream에 write 하여, 최종적으로 콘솔에 출력.
2) FileAppender ( ch.qos.logback.core.FileAppender )
– 로그를 지정된 File에 기록.
3) RollingFileAppender ( ch.qos.logback.core.rolling.RollingFileAppender )
– FileAppender로 부터 상속받은 Appender로 날짜, 최대 용량 등을 설정하여 지정한 파일명 패턴에 따라 로그가 다른 파일에 기록
4) SMTPAppender ( ch.qos.logback.classic.net.SMTPAppender )
- 로그를 메일에 기록
5) DBAppender( ch.qos.logback.classic.db.DBAppender )
- 데이터 베이스에 기록
Logback-Core의 기본 Appender 외에도 Logback-Classic 모듈의 다양한 Appender (SocketAppender, SSLSocketAppender 등)을 사용하여 로그를 원격위치에 기록.
Appender들의 하위 항목으로 출력 형식(Layout Pattern)을 지정하여 각 Appender마다 원하는 내용을 출력.
ex) %logger(Logger 이름), %thread(현재 스레드명), %level(로그 레벨), %msg(로그메시지), %n(new line) 등
■ pattern
[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n [2019-08-23 22:59:47:1306][main] INFO c.g.f.FirstProjectApplication - Started FirstProjectApplication in 1.193 seconds (JVM running for 1.665) |
%d => 로그 기록시간
%thread => 현재 Thread 이름
%-5level => 로그 레벨, -5는 출력의 고정폭 (5글자)
%logger{length} => 축약된 logger name, length는 최대 자릿수
%msg => 로그메시지 ( =%messsage )
%n => 줄바꿈
${PID:-} => 프로세스 아이디
기타
%p => 로깅 레벨
%F => 로깅이 발생한 프로그램 파일명
%M => 로깅일 발생한 메소드의 이름
%l => 로깅이 발생한 호출지의 정보
%L => 로깅이 발생한 호출지의 라인 수
%t => 쓰레드 명
%c => 로깅이 발생한 카테고리
%C => 로깅이 발생한 클래스 명
%m => 로그 메시지
%r => 애플리케이션 시작 이후부터 로깅이 발생한 시점까지의 시간
■ rollingPolicy class
ch.qos.logback.core.rolling.TimeBasedRollingPolicy => 일자별 적용
ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP => 일자별 + 크기별 적용
ex ) logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="30 seconds"> <!--로그 파일 저장 위치--> <property name="LOGS_PATH" value="./logs"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}[%-5level] : %msg%n</pattern> </encoder> </appender> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>error</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <file>${LOGS_PATH}/error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>${LOGS_PATH}/error-%d{yyyy-MM-dd}.%i.txt</fileNamePattern> <maxFileSize>100MB</maxFileSize> <!-- 최대 파일 용량 (최대 10MB 내외 권장) --> <maxHistory>60</maxHistory> <!-- 최대 파일 생성 갯수--> <totalSizeCap>10GB</totalSizeCap> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}[%-5level] : %msg%n</pattern> </encoder> </appender> <appender name="LogstashAppender" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <destination>192.168.10.73:5001</destination> <!-- encoder is required --> <encoder class="net.logstash.logback.encoder.LogstashEncoder" /> </appender> <root level="debug"> <appender-ref ref="STDOUT"/> <appender-ref ref="ERROR"/> <appender-ref ref="LogstashAppender"/> </root> </configuration> |
'SPRING > SPRING BOOT' 카테고리의 다른 글
SPRING BOOT 서비스 (0) | 2025.04.04 |
---|---|
[Spring Boot] Spring Boot (0) | 2017.09.11 |
Quartz + Spring Batch (0) | 2017.08.21 |