web-dev-qa-db-ja.com

Log4Jでのしきい値の意味は何ですか?

こんにちはすべて私は以下のようなlog4jプロパティを持っています。 TextProcessor.logに記録されるものはすべて、WARNレベルを超えています。ここでデバッグ用に設定されているしきい値がわかりません。誰かがしきい値が何をするのか説明できますか

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

前もって感謝します

78
javanerd

ここには、ロガーとアペンダーの2つのことがあります。残念ながら、あなたは両方に同じ名前を選択しましたが、それはそれをあまり明確にしません。

ロガーの最小レベルは警告に設定されます。つまり、少なくともこの警告レベルを持たないこのロガーでログを記録するものはすべて無視されます。

ロガーがメッセージを受け入れると、1つまたは複数のアペンダー(ファイル、コンソール、メールサーバーなど)に送信されます。これらの各アペンダーは、しきい値を定義できます。たとえば、コンソールのメッセージをエラーに制限し、ログファイルの警告メッセージを受け入れることができます。

121
JB Nizet

しきい値はログに記録されるメッセージの2番目のフィルター

例えば。:

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

loggerがレベルDEBUGに設定され、appender ThresholdがErrorに設定されている場合、AppenderのTextProcessorのみがError以上の重大度のメッセージがログに記録されます。

しきい値の使用は、さまざまなしきい値レベルでさまざまなアペンダーを定義できます。たとえば、上記の例では、Info Logで情報レベルのメッセージロギングを有効にすることもできます。

 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 [〜#〜] にアクセスしてください

30

ロギングのレベルは、TRACEDEBUGINFOWARNERROR、およびFATALです。重大度に応じて、コードのどのレベルで何をログに記録するかを選択できます。たとえば、メソッドの開始と終了を記録する機能がありますが、DEBUGレベルで記録することを選択できます。これは、デフォルトでコンソールに出力されるので、コードをデバッグするのに役立ちます(デフォルトのコンソールアペンダーはオンです)。本番環境に移行するときに、しきい値をERRORに増やして、アプリケーションがあまり有用でない詳細をコンソールまたはログファイルに出力しないようにすることができます。

25
Vinod R

プロパティ設定ファイルからログメッセージのフローへの簡単なマッピングを提供します。 (最小化するためにいくつかの設定行を隠しました)

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
...

schema of logging from settings above

それが何であるかを理解するには、次のことを知っておく必要があります。

  • 左端に取得すると、ロギングのレベルが増加します:TRACE、DEBUG、INFO、WARN、ERROR、FATAL
  • ロガーがアプリケーションから受け入れる最小レベルのロギング。
  • 書き込まれる内容を決定するアペンダーの最小レベルのロギング

**継承と加算性についてはもっと複雑なことがありますが、最初に基本的で簡単なことから始めてください。

10
Ken Block