35

パッケージ「com.example」があります。このパッケージには5つのクラスがあります。これらのクラスのうち4つをファイルに記録したいのですが、5番目のクラスを除外します。

4つのロガー(例:logger name = "com.example.Class1")を記述し、4つのロガーすべてに同じアペンダーを追加することができます。もっと簡単な方法はありませんか(5つのクラスではなく100のクラスがあるとしましょう)?

このような他のいくつかの質問があります。しかし、他の人は、このクラスをログに記録するためにクラスを除外したかっただけです。これは、加法性フラグを使用して解決できます。しかし、5番目のクラスをログに記録したくないので、ここでは加法性フラグは機能しないと思いますが、他のすべてのクラスは?!

誰かが私を助けてくれることを願っていますか?

4

2 に答える 2

38

ログレベルをオフにするように5番目のクラスを構成するだけです。

log4j.logger.com.example=INFO, MyAppender
log4j.logger.com.example.FifthClass=OFF

実際には、に設定するのではなくOFF、に設定することをお勧めしますFATALERRORまたはWARN代わりに。

あるクラスからのログ記録を無視したい主な理由は、通常、ログ記録が多い場合です(これ以上のログが有用であり、ログの読み取りが困難になります)。ただし、ほとんどの場合、何かが本当にうまくいかないかどうかを知りたいと思うでしょう。これを設定することでERROR、実際の問題のあるケースを確認できますが、大量のINFOログステートメントに悩まされることはありません。

于 2011-03-11T07:22:23.790 に答える
14

(完全な答えのためだけに)

log4j.xml ファイルも設定することで、それを試みることができます。好きなようにパッケージ全体をログに記録し、 FifthClass を別の方法でログに記録します。

<logger name="com.example">
    <level value="INFO"/>
</logger>

<logger name="com.example.FifthClass">
    <level value="FATAL"/>
</logger>
于 2012-07-30T10:09:03.957 に答える