Glassfishサーバーでアプリケーションのログを設定しようとしています。SLF4jを使用してすべてを集約し、Logbackバインディングを使用してファイルを書き込みます。log4j-over-slf4j
また、プロジェクトjul-to-slf4j
にjcl-over-slf4j
ライブラリを追加しました。もちろんslf4j-api
、Logbackのものもあります。すべてのライブラリはプロジェクトWEB-INF/lib
とにありglassfish/lib/endorsed
ます。
つまり、アイデアは次のとおりです。すべてをSLF4jにリダイレクトしてから、Logbackでログに記録します。
コードには、テスト用に次の部分があります。
jclLog.debug("Login JCL: Debug level");
jclLog.error("Login JCL: Error level");
log4jLog.debug("Login Log4j: Debug level");
log4jLog.error("Login Log4j: Error level");
slfLog.debug("Login SLF4j: Debug level");
slfLog.error("Login SLF4j: Error level");
実行後、ログバック構成のログファイルにLog4jおよびSLF4jのログエントリがあります。しかし、JCLエントリーはありません。代わりにserver.logファイルにアクセスします。
問題は、なぜJCLエントリがGlassfishロガーでキャッチされるのか、そしてそれをどのように防ぐことができるのかということです。