additivity
のプロパティを調整する可能性のある代替方法は、ロガーを最も具体的なものから最も一般的なものまで調べることです。次の例では、foo.bar.LoggingExampleClassで発生するすべてのログイベントに対して、コンソールでの二重ログの記録を期待しています。 foo.barから余分なコンソールアペンダーを削除することは安全です。LoggingExampleClass Loggerはすでにルートロガーによって保護されているので、
<Logger name="foo.bar.LoggingExampleClass" level="DEBUG">
<AppenderRef ref="Console" /> <!-- THIS APPENDER COULD BE REMOVED -->
<AppenderRef ref="FooBarPackageLogging" />
</Logger>
<Root level="WARN">
<AppenderRef ref="Console" />
<AppenderRef ref="MainLogFile" />
</Root>
加算率調整アプローチとアペンダー調整アプローチの両方にはトレードオフがあります。加算性を無効にすると、望ましくないジェネリックレベルのロガーのアペンダーが使用されなくなる可能性があります。上記の例では、foo.bar.LoggingExampleClass Loggerのadditivity="false"
プロパティを設定すると、ログイベントがルートロガーで参照されるMainLogFileに追加されないことを意味します。
一方、親アペンダーがより細かいロガーの影響を調べずに変更された場合、親アペンダーに依存すると問題になることがあります。たとえば、foo.bar.LoggingExampleClassロギングイベントをコンソールに書き込む必要があるとします。 foo.bar.LoggingExampleClass Loggerのコンソールアペンダが削除されていても、現在、これらはadditivityのために上記の設定例に含まれています。ただし、コンソールアペンダーも追加調整なしでルートロガーから削除された場合、要件はもはや満たされません。
構成上の問題または初期化の問題が考えられます。 ロガーはどこで初期化しますか? Logger.getLogger(SomeClass.class)を2回呼び出すことはありませんか? いくつかの追加コードで、より多くの情報を提供することができます。 – MaSEL