2017-07-28 6 views
0

私はそうのように定義されたのlog4jプロパティファイルをしている:コンソールでDEBUGレベルのログを取得するのはなぜですか?

log4j.rootLogger=INFO, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

log4j.logger.com.github.user=DEBUG, file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=target/cucumber-parser.log 
log4j.appender.file.MaxFileSize=5MB 
log4j.appender.file.MaxBackupIndex=10 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

私の理解に基づいて、INFOレベルのログはstdout(コンソール)にルーティングされなければならないとDEBUGだけでファイルに記述する必要があります。しかし、コンソールにはINFODEBUGの両方のレベルがあります。私は間違って何をしていますか?

答えて

0

私はlog4j.appender.stdoutに以下の行を適用することによって、私の問題を解決するために管理:

log4j.appender.stdout.Threshold=INFO 

この行は、私は私の元の質問に投稿された元の設定に追加して、唯一のINFOレベルのログがに印刷されますコンソールとDEBUGは必要に応じてファイルに再ルーティングされます。

0

INFOレベルはDEBUGレベルをカバーするためです。あなたは両方を見ることができるように。 <が< ERROR OFF < FATAL <

をので、ログにWARN ALL < DEBUG < INFOを選択した例を示します

はよりLogging Levels

0

あなたは基本的にlog4j docを確認するか、this tutorialあなたはレベルの詳細情報を見ることができますが、場合には、参照してください。レベルとすべての偉人。

0

log4j.additivity.com.github.user=falseを加える。

設定では、レベルcom.github.userがデバッグに設定されています。また、 "file"の他に、root loggerにも追加されますので、コンソールにデバッグログcom.github.userが表示されます。

実際に、ロガーとアペンダーを分割するこの方法で設定を書き込むと、よりよく理解できます。ロガーの

log4j.rootLogger=INFO, stdout 
log4j.logger.com.github.user=DEBUG, file 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=target/cucumber-parser.log 
log4j.appender.file.MaxFileSize=5MB 
log4j.appender.file.MaxBackupIndex=10 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

、あなたはデバッグするcom.github.userを指定し、rootlogger設定で他のすべての情報。

com.github.userfileに出力され、すべてのログがコンソールに出力されます。 additivityを設定した場合、com.github.userrootloggerから削除されるため、コンソールには他のログしか存在しません。

+0

こんにちは、あなたの答えはありがたいですが、 'com.github.user' *がプロジェクト階層のルートノードである場合にはうまくいくと思います。私はそれを前に試してみましたが、何もコンソールに何も印刷されませんでした。 –

関連する問題