티스토리 뷰
Spring Boot : Logger logback 설정파일 작성 및 Customization
Korean Eagle 2020. 5. 1. 06:17-1. 이 포스트는 Logback 설정방법에 대해서 설명한다. 대부분의 내용은 log를 파일로 저장하는 방법에 대한 것이다.
-1-1 로그를 standard output으로 보낸 것만 알고 싶으면 3번 항목의 STDOUT만 보면 된다.
0. 간단히 파일에 로그를 출력하는 방법이 있다.
0-1 application.properites파일에 설정한다.
0-2 logging.file 아래 name과 path 두 가지 속성이 있는데, 둘 중에 하나 만 써야 한다
0-2-1 둘 다 쓰면 둘 다 싹 무시해서 로그파일이 생성되지 않는다.
0-2-2 예전에는 logging.file이 하나의 property였는데 deprecated되었다.
0-3 윈도우를 사용할 경우 \\ 대신에 /로 바꾸어 주어야 한다.
0-4 10MB를 기준으로 로그 파일이 추가된다.
logging.level.root=INFO
logging.file.name=C:/Users/heops/Documents/logs/flightreservation.log
#logging.file.path=C:/Users/heops/Documents/logs
0-5 이 방법을 사용하면 파일과 콘솔 둘 다 별도의 설정없이 출력된다.
1. 좀 더 세부적인 설정을 위해서 logback.xml을 생성할 수 있다.
1-0. 순서를 설명하면
1-0-1. logback.xml 파일을 생성한다.
1-0-2. appender를 정의한다.
1-0-2-1. 로거 파일이름을 지정한다.
1-0-2-2. 출력방식을 지정한다.
1-0-2-3. 로거 파일 저장 주기를 설정한다.
1-0-3. root 로거에 사용할 appender를 지정한다.
1-1. Logging에는 여러 요소가 있다.
1-1-1. Logger는 로직상 출력되는 데이터를 가지고 오는 기능을 한다.
1-1-2. Appender(Log Handler)는 Logger가지고 온 정보를 스트림으로 보내는 기능을 한다.
1-1-2-1. Appender는 내부적으로 encoder를 사용하여 로그가 어떻게 출력될지를 설정한다.
1-1-2-1-1. Pattern은 encoder가 어떤 형식으로 출력할지를 상세하게 지정한다.
1-1-2-2. Policy는 로그파일이 어떤 방식으로 관리 될지를 설정한다.
1-1-2-2-0 rollingPolicy는 얼마 주기로 파일이 생성되는지, 파일생성주기를 정한다.
1-1-2-2-1. fileNamePattern은 로그파일이 추가될 때 어떤 이름이 지정 될지를 지정한다.
1-1-2-2-2. timeBasedFileNamingAndTriggeringPolicy는 24시간을 기준으로 기본 로그를 추가하는 정책설정
1-1-2-2-2-1. 내부에서 파일 크기로 로그파일이 추가 될 수 있도록 설정가능하다.
1-2. logback.xml은 src/main/resources에 생성한다. 즉 root classpath에 위치시킨다.
2. 아래는 간단한 예제이다.
2-1. class의 절대경로를 얻는 방법은 ctrl+shift+t로 클래스를 검색하여 클래스를 오픈하고
2-2. qualified name을 복사해서 붙이면 된다.
2-3. property를 사용하면 ${}이용해서 반복을 피할 수 있다.
2-4. %로 시작하는 구문들은 logback의 참조기호인데, %-5level은 어떤 레벨의 로그인지를 기록한다.
2-5. %d로 timestamp를 기록가능한데 방식이 자바나 sql의 date 포멧지정과 동일하다.
2-6. rollingPolicy는 로그 파일이 archive되는 방식을 지정하는데 기본적으로 시간기준의 정책을 사용한다.
2-7. 아래 파일에서는 10MB가 되었거나 24시간이 지났을 경우 archived폴더로 현재의 로그가 복사된다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_DIR" value="C:/Users/heops/Documents/logs"></property>
<property name="LOG_PREFIX" value="flightreservation"></property>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/${LOG_PREFIX}.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d{yyyy-MM-dd HH:mm:ss}- %-5level - %msg%n</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/archived/${LOG_PREFIX}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="FILE"></appender-ref>
</root>
</configuration>
3. 위의 설정만 하면 스프링은 위의 설정만 적용하게 되어 console에는 전혀 출력하지 않는다.
3-1. console에서도 로그를 보고 싶으면 추가 appender를 지정하면 된다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_DIR" value="C:/Users/heops/Documents/logs"></property>
<property name="LOG_PREFIX" value="flightreservation"></property>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/${LOG_PREFIX}.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d{yyyy-MM-dd HH:mm:ss}- %-5level - %msg%n</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/archived/${LOG_PREFIX}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<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} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="FILE"></appender-ref>
<appender-ref ref="STDOUT"></appender-ref>
</root>
</configuration>
4. 자세한 설정은 아래 경로를 참고한다.
'Spring > Spring Boot' 카테고리의 다른 글
Spring Boot : Security 사용하기 기본 Configuration (0) | 2020.05.01 |
---|---|
Spring Boot : application.properties 읽어오기 (0) | 2020.05.01 |
Spring Boot : Logger 사용 기본 절차 및 레벨 설정 (0) | 2020.05.01 |
Spring Boot : PDF Generator(itextpdf) 사용하기 + Email 전송 (0) | 2020.04.30 |
Spring Boot : RestTemplate사용하기 (0) | 2020.04.30 |
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- Spring
- 설정하기
- MYSQL
- Rest
- hibernate
- Spring Security
- spring boot
- form
- login
- 스프링부트
- XML
- one-to-one
- 상속
- WebMvc
- RestTemplate
- Angular
- 외부파일
- Many-To-Many
- Validation
- mapping
- Security
- 자바
- one-to-many
- 로그인
- 설정
- 매핑
- jsp
- 스프링
- crud
- 하이버네이트