Log
연속된 데이터의 기록
ex) 프로그램이 실행되면서 콘솔에 출력되는 것들 System.out.print()
어플리케이션의 사이즈가 커지면?
필요한 추적용 데이터 저장은?
-> Logging Framework
- 비즈니스로직에서 로그성코드 분리
- 특정한 로그는 정해진 파일에 저장
- 로그를 레벨로 분리하여 관리 -> 상황에 따라 유연하게 대처 가능
Log4j
spring에서는 log4j 라이브러리가 로그 관련한 기능 관리해줌
<Configuration>
로그설정을 위한 최상위 요소
- properties, appenders, loggets 요소를 자식으로 가짐
<Properties>
configuration에서 공통적으로 사용하기 위한 속성들, 변수정의
(로그파일 경로, 로그출력형태)
<Appenders>
전달된 로그의 출력위치(console, file, jdbc 등) 결정
- layout : 로그를
어떤 형식
으로 출력할것인지 - RollingFile : 특정기준으로 압축하여 저장하는 방식의 Appender, 파일생성에 대한 정책
<Loggers>
로깅을 직접하는 요소
- 출력할 메시지(로깅메시지)를 Appender에게 전달
- logger는 6단계의 레벨을 가짐
- 레벨을 가지고 출력여부 결정 (낮은 레벨은 높은 레벨 로그까지 포함하여 출력)
- TRACE : 1레벨, 제일 상세
- DEBUG : 개발시 디버깅용도로 사용한 메시지
- INFO
- WARN
- ERROR : 실행 중 문제가 발생한 상태
- FATAL : 심각한 문제
로그설정
- import
- log4j-1.2.17.jar
- slf4j-log4j12-1.7.25
- log4j.properties
# root logger definition
log4j.rootLogger=DEBUG, console
#log4j.rootLogger=ERROR, console
#root logger appender definition
log4j.appender.console=org.apache.log4j.ConsoleAppender
#root logger layout definition
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p [%t] - %m%n
debug 레벨은 logger.error (더 높은 레벨) 관련 로그도 출력
Reference
https://smujihoon.tistory.com/121
https://developjuns.tistory.com/30