log4j 로깅 계층 순서


169

log4j 로깅의 계층 구조는 무엇입니까?

DEBUG
INFO
WARN
ERROR
FATAL

다음 중 문제를 해결하는 데 도움이되는 가장 높은 로깅을 제공하는 것은 무엇입니까? 로깅이 발생하는 순서 나 계층을 제공 할 수 있습니까? 감사!

답변:


292

이 테이블이 도움이 될 수 있습니다.

로그 레벨

첫 번째 열로 내려 가면 각 수준에서 로그가 어떻게 작동하는지 볼 수 있습니다. 즉, WARN의 경우 ( FATAL, ERROR 및 WARN )이 표시됩니다. 의 경우 OFF , 아무것도 볼 수 없습니다.


가시성항목 이라는 용어 는 자명하지 않습니다. 공식 문서도 이것에 대해 모호합니다. 와 같은 출력 방식 error, info, debug등 로거 양수인 로깅 메시지에 대한 우선 순위 / 심각도. 로깅이 실제로 적용되는 경우 (메시지가 표시됨) 사용중인 로거의 유효 로깅 레벨에 따라 다릅니다.
Wolf

1
링크가 끊어졌습니다. 수정하거나 제거하십시오
yurin

이 답변 비록 (그냥 "계층 구조 순서"를 묻는 것) 문제는, 나는 마지막으로 가난한 용어에 대한을 downvoted : 추락 , "가시성"작품 , 항목을 . 로거 구성이 실제 로깅 (통과 로그 이벤트)에 어떤 영향을 미치는지 설명하고 싶지 않습니까? 다른 업데이트를 고려 하십시오 . BTW 다음의 표 공식 문서 (섹션의 끝은) 치료에 차이 OFFALL잘 소스의 일부를 읽은 후 나는 그들의 표가 맞는지 의심 (특별한 경우를 발견하지 않음).
늑대

Wolf에게 감사합니다. 귀하의 의견에 따라 답변을 업데이트했습니다.
nxhoaf

2
이것이 로그 수준과 특정 로거 수준 설정에 대해 출력 될 것으로 예상되는 로그 메시지 유형에 대한 뛰어난 시각화라고 생각합니다. 내 제안은 차트가 열이 아닌 행으로 해석되어야한다는 것을 뷰어에게 안내하기 위해 행의 색을 번갈아 바꾸는 것입니다. (즉, 행은 로거 레벨을 나타내고 열은 존재하는 로그 메시지 유형을 나타냄)
Larry Hector

149

힘을 사용하고 소스를 읽으십시오 ( PriorityLevel클래스 에서 발췌 , TRACE 레벨은 버전 1.2.12에서 도입되었습니다).

public final static int OFF_INT = Integer.MAX_VALUE;
public final static int FATAL_INT = 50000;
public final static int ERROR_INT = 40000;
public final static int WARN_INT  = 30000;
public final static int INFO_INT  = 20000;
public final static int DEBUG_INT = 10000;
public static final int TRACE_INT = 5000; 
public final static int ALL_INT = Integer.MIN_VALUE; 

또는 클래스log4j API를Level 사용하면 매우 명확합니다.

라이브러리가 특정 명령문을 인쇄할지 여부를 결정할 때 책임있는 Logger오브젝트 의 유효 레벨 (구성을 기반으로 함)을 계산하고이를 레벨 과 비교합니다 LogEvent(코드에서 사용한 메소드에 따라 다름 – trace / debug / ... / 치명적 ). 경우 LogEvent의 레벨이 큰 경우 또는 동등 Logger의 레벨은이 LogEvent펜더로 전송 (들) - "인쇄". 핵심적으로, 그것은 모두 정수 비교로 귀결 되며이 상수가 작용하는 곳입니다.


56
OFF
FATAL
ERROR
WARN
INFO
DEBUG
TRACE
ALL

1
이것은 tutorialspoint.com/log4j/log4j_logging_levels.htm에 제공된 정보와 충돌합니다. 어느 것이 사실입니까?
Mike


4
귀하의 링크에서 그것은 그 "ALL은 <DEBUG은 <정보는 <ERROR <FATAL <OFF <WARN"과 완벽하게 같은 말했듯 말했다
the.malkolm

6
벤 다이어그램 OFF () ALL (TRACE (DEBUG (INFO (WARN (ERROR (FATAL))))))
Hernán Eche

log4j 에서 @Mike 로깅 레벨 첫 번째 테이블에서 알파벳 순서를 사용 합니다 . 잃어버린 trace것을 제외하고 , 그들은 나중에 ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF( 그것이 <덜 중요하다는 것을 의미합니다.)
Wolf

24

log4j 로깅 레벨의 계층 구조는 다음과 같습니다.

  • 자취
  • 디버그
  • 정보
  • 경고
  • 오류
  • 치명적인
  • 떨어져서

TRACE 로그 수준은 문제를 해결하는 데 도움이되는 최고의 로깅을 제공합니다. 디버그 로그 수준은 문제를 해결하는 데 매우 유용합니다.

로그 레벨에 대한 자세한 정보는이 링크를 참조하십시오. https://logging.apache.org/log4j/2.0/manual/architecture.html


12

[ http://javarevisited.blogspot.com/2011/05/top-10-tips-on-logging-in-java.html 에서 가져옴]

DEBUG는 가장 낮은 제한적인 Java 로깅 수준이며 응용 프로그램을 디버깅하는 데 필요한 모든 것을 작성해야합니다.이 Java 로깅 모드는 개발 및 테스트 환경에서만 사용해야하며 프로덕션 환경에서는 사용해서는 안됩니다.

INFO는 DEBUG Java 로깅 레벨보다 제한되어 있으며 서버가 시작된 것과 같은 유익한 목적의 메시지, 들어오는 메시지, 발신 메시지 등을 java의 INFO 레벨 로깅에 기록해야합니다.

WARN은 INFO java 로깅 레벨보다 더 제한되어 있으며 클라이언트와 서버 간의 연결이 끊어진 경고 종류의 메시지를 로깅하는 데 사용됩니다. 데이터베이스 연결이 끊어지고 소켓이 한계에 도달했습니다. 이러한 메시지 및 Java 로깅 레벨은 Java에서 이러한 로깅 메시지에 대한 경고를 설정하고 지원 팀이 Java 애플리케이션의 상태를 모니터하고이 경고 메시지에 응답 할 수 있기 때문에 거의 중요합니다. 요약 WARN 레벨은 Java에 로깅하기위한 경고 메시지를 로깅하는 데 사용됩니다.

ERROR는 WARN보다 제한된 Java 로깅 레벨이며 오류 및 예외를 로그하는 데 사용됩니다.이 Java 로깅 레벨 및 경보 모니터링 팀에서이 메시지에 응답하도록 경보를 설정할 수도 있습니다. ERROR는 Java에 로그인 할 때 심각하므로 항상 인쇄해야합니다.

치명적인 Java 로깅 레벨은 애플리케이션을 중단시킬 수있는 매우 심각한 오류 이벤트를 지정합니다. 이 후 대부분 응용 프로그램이 충돌하고 중지되었습니다.

OFF Java 로깅 레벨은 가능한 최고 순위를 가지며 Java에서 로깅을 해제하기위한 것입니다.


4

계층 순서

  1. 모두
  2. 자취
  3. 디버그
  4. 정보
  5. 경고
  6. 오류
  7. 치명적인
  8. 떨어져서
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.