Log4J에서 임계 값은 무엇을 의미합니까?


80

나는이 log4j다음과 같은 속성 무언가를. 로그인 된 모든 것은 TextProcessor.logWARN 수준 이상입니다. 여기에서 디버그하도록 설정된 임계 값을 이해하지 못합니다. 누군가 임계 값이 무엇인지 설명 할 수 있습니까?

log4j.logger.TextProcessor=warn,TextProcessor 

log4j.appender.TextProcessor=org.apache.log4j.RollingFileAppender
log4j.appender.TextProcessor.File=C:/project/logs/TextProcessor.log
log4j.appender.TextProcessor.MaxFileSize=10MB
log4j.appender.TextProcessor.MaxBackupIndex=10
log4j.appender.TextProcessor.Threshold=debug
log4j.appender.TextProcessor.layout=org.apache.log4j.PatternLayout
log4j.appender.TextProcessor.layout.ConversionPattern=[%d] [%5p] (%F:%L) - %m%n

1
log4j 잠금 및 성능에 대한 레벨 및 임계 값의 영향에 대한 log4j의 프로덕션 설정 도 참조하십시오 .
Vadzim

답변:


123

여기에는 로거와 어 펜더의 두 가지가 있습니다. 불행히도 두 가지 모두에 대해 동일한 이름을 선택했지만 명확하지 않습니다.

로거의 최소 수준은 경고로 설정되어 있습니다. 이는 최소한 경고 수준이없는이 로거로 기록하는 모든 항목이 무시된다는 것을 의미합니다.

로거가 메시지를 수락하면 하나 이상의 어 펜더 (파일, 콘솔, 메일 서버 등)로 전송됩니다. 이러한 각 어 펜더는 임계 값을 정의 할 수 있습니다. 예를 들어 콘솔의 메시지를 오류로 제한하고 로그 파일의 경고 메시지를 수락 할 수 있습니다.


나를 위해 '임계 값'은 실제로 적합하지 않습니다. xml 구성을 사용하여 log4j를 시작했으며 appender에서는 임계 값을 의미하는 '레벨'이라고합니다. 두 개의 다른 레이블 (라벨, 임계 값)을 사용하는 동일한 개념 (로그 심각도 제한)이 이해하기 더 어렵게 만든다고 생각합니다 (지금까지 정말로 이해했다면). 그러나 나는 어쨌든 영어 원어민이 아닙니다.
Dirk Schumacher 2016

33

임계 값은 메시지가 기록되는 두 번째 필터입니다.

예 :

 log4j.logger.TextProcessor=Debug,TextProcessor , InfoLogger
 .
 .
 .
 log4j.appender.TextProcessor.Threshold=Error

Logger가 DEBUG 수준으로 설정되고 appender Threshold가 Error로 설정된 경우 appender TextProcessor 만 사용하면 오류 및 더 높은 심각도 메시지가 기록됩니다.

임계 값의 사용은 서로 다른 임계 값 수준으로 다른 어 펜더를 정의 할 수 있습니다.

 log4j.logger.TextProcessor=Debug,TextProcessor , InfoLogger
 .
 .
 .
 log4j.appender.InfoLogger.Threshold=INFO

수준을 이해하기 위해 log4j 에 로그인 하는 수준은 다음과 같습니다 .

FATAL: shows messages at a FATAL level only  
ERROR: Shows messages classified as ERROR and FATAL  
WARNING: Shows messages classified as WARNING, ERROR, and FATAL  
INFO: Shows messages classified as INFO, WARNING, ERROR, and FATAL  
DEBUG: Shows messages classified as DEBUG, INFO, WARNING, ERROR, and FATAL  
TRACE : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL
ALL : Shows messages classified as TRACE,DEBUG, INFO, WARNING, ERROR, and FATAL 
OFF : No log messages display

자세한 내용 은 URL 로 이동


25

로깅의 수준은 TRACE, DEBUG, INFO, WARN, ERRORFATAL. 심각도에 따라 코드의 어떤 수준에서 기록 할 항목을 선택할 수 있습니다. 예를 들어 메소드의 시작 및 종료를 기록 할 수 있지만 DEBUG수준 에서 기록하도록 선택할 수 있습니다 . 기본적으로 콘솔에 출력되므로 코드를 디버그하는 데 도움이됩니다 (기본 콘솔 어 펜더가 켜져 있음). 프로덕션으로 이동하는 동안 임계 값을 높이고 ERROR응용 프로그램이 콘솔이나 로그 파일에 유용하지 않은 세부 정보를 인쇄하지 못하도록 할 수 있습니다.


13

속성 구성 파일에서 로그 메시지 흐름으로의 간단한 매핑을 제공합니다. (최소화하기 위해 일부 구성 줄을 숨겼습니다)

log4j.rootLogger=ALL, stdout
log4j.logger.com.xyz=INFO, file

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold=DEBUG
...

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.Threshold=WARN
...

위의 설정에서 로깅 스키마

그것이 무엇인지 이해하려면 다음을 알아야합니다.

  • 가장 왼쪽으로 검색 할 때 로깅 수준이 증가합니다 : TRACE, DEBUG, INFO, WARN, ERROR 및 FATAL
  • 로거가 응용 프로그램에서 허용하는 최소 수준의 로깅입니다.
  • 기록 할 내용을 결정하는 추가 자에 대한 최소 수준 로깅

** 상속과 가산성에 대해 좀 더 복잡한 것이 있지만 먼저 기본적이고 간단한 것부터 시작해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.