Log4Jでしきい値はどういう意味ですか?


80

私は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

1
log4jのロックとパフォーマンスに対するレベルとしきい値の影響については、log4jの本番設定も参照してください。
Vadzim 2013年

回答:


123

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

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

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


私にとって「しきい値」は実際には適合しません。xml構成を使用してlog4jを開始しました。アペンダーでは、しきい値の意味で「レベル」と呼ばれています。2つの異なるラベル(label、threshold)を使用した同じ概念(ログの重大度を制限する)では、理解が難しくなると思います(これまで本当に理解していた場合)。しかし、私はとにかく英語を母国語とはしていません。
Dirk Schumacher

33

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

例えば:

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

ロガーがレベルDEBUGに設定され、アペンダーのしきい値がエラーに設定されている場合、アペンダーTextProcessorではエラーとより重大度の高いメッセージのみがログに記録されます。

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

 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

ログのレベルはTRACEDEBUGINFOWARNERRORFATAL。重大度に応じて、コードのどのレベルで何をログに記録するかを選択できます。たとえば、メソッドの開始と終了をログに記録する機能がありますが、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.