본문 바로가기
IT/Java

Log level 에 대해

by 성준하이 2023. 7. 17.
반응형

이전에 로그 관련된 포스팅을 다룬적이 있다.

 

자세한 내용은 아래 참고 포스팅을 참고 바란다.

 

로그에서는 로그를 남길 수 있는 레벨이라는게 존재한다.

 

결론 먼저 말하면 

 

TRACE < DEBUG < INFO < WARN < ERROR 
  • 로그 레벨에 따라 로그 메시지의 종류가 달라진다
  • 레벨은 출력 범위를 나타내고, 현재 레벨 이상의 로그만 화면에 출력된다
    ex) INFO Level이면 INFO 레벨 이상의 로그(INFO, WARN, ERROR)만 화면에 출력
  • log4j의 경우  FATAL(심각한 에러 발생 시) 레벨까지 포함 (log4j 보안이슈로 log4j2 도 마찬가지)

 

그리하여 아래 5개의 단계로 로그를 관리한다.

  • TRACE : 추적 레벨은 DEBUG보다 좀 더 상세한 정보를 표시
  • DEBUG : 프로그램을 디버깅하기 위한 정보를 표시 (운영 서버에서는 표시하지 않도록 설정)
  • INFO : 상태 변경과 같은 정보성 로그를 표시
  • WARN : 처리 가능한 문제, 시스템 에러의 원인이 될 수 있는 경고성 메시지를 표시
  • ERROR : 요청을 처리하는 중 오류가 발생한 경우 표시

 

예제 코드는 아래와 같다.

private Logger log = LoggerFactory.getLogger(this.getClass());

//단순 api
@PostMapping("/test")
public void testApi() {

log.trace("가장 디테일한 로그");
log.debug("디버깅용 로그");
log.info("정보성 로그");
log.warn("경고");
log.error("에러");

그리고 로그 레벨은 yml 파일에 아래와 같이 설정해준다. (properties 파일 역시 가능 > 참고포스팅 참고)

 

logging:
  level:  # 각 package 별로 로깅 레벨을 지정 가능
    root: warn #root 는 전체 
    #com.test.study : error
    #com.test.study.api  : debug
  #file:
    #name: ${user.dir}/log/test.log  # 로깅 파일 위치
    #max-history: 7 # 로그 파일 삭제 주기이다. 7일 이후 로그는 삭제
    #max-size: 10MB  # 로그 파일 하나당 최대 파일 사이즈

 

이렇게 하고 테스트를 돌리면 설정이 warn 이상인 로그만 출력이기에

 

2023-07-09T21:22:23.841+09:00  WARN 96516 --- [nio-8080-exec-3] com.test.etc.TestApi             : 경고
2023-07-09T21:22:23.843+09:00 ERROR 96516 --- [nio-8080-exec-3] com.test.etc.TestApi             : 에러

 

이렇게 경고와 에러만 출력이 된다.


참고 포스팅

https://thenicesj.tistory.com/476

 

LOG 란?

로그란? 모든 행위와 이벤트 정보를 시간의 경과에 따라 기록한 데이터 시스템 상에서 "로그" 를 생성하는 과정을 "로깅(Logging)" 이라고 한다. 로깅(logging)의 장점 개발 프로그램의 디버깅 예기치

thenicesj.tistory.com

https://thenicesj.tistory.com/69

 

log4j 란?

얼마전에 세계적으로 취약점으로 알려진 log4j 라고 들어보신 분들이 많을것이고 it에서 종사하시는 분들이라면 기업에서도 실제로 대응한 경험이 있을 것이다. 간단하게 설명하며 어떤 놈이길

thenicesj.tistory.com

https://thenicesj.tistory.com/531

 

application.properties vs application.yml

본 포스팅의 주제는 제목과 같다. 먼저 둘의 차이를 보기 위해서 예제를 보면 다음과 같다. application.yml server: port: 8080 servlet: context-path: /test encoding: charset: UTF-8 enabled: true force: true spring: datasource:

thenicesj.tistory.com

 

반응형

댓글