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

업데이트: