web-dev-qa-db-ja.com

Slf4jおよびLog4jを使用したTomcatロギング

Tomcat 7サーバーにWebアプリをデプロイしました。私のアプリケーションはlog4jfile appenderを使用しています。ただし、すべてのログメッセージがファイルに書き込まれるわけではありません。

私のクラスパスには、次のものがあります。

log4j-1.2.14.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar

log4j.propertiesファイルはローカルマシンで正常に機能しており、正しくデプロイされています。

アプリケーションで生成されたエラーメッセージがcatalina.outに書き込まれているのに、log4j logには書き込まれていません。 catalina.outのログメッセージは、出力パターンが私のlog4jパターンとは異なる形式であるため、他のログフレームワークからのものであるように見えます。 catalina.logに表示されるログは次のようになります。

Nov 4, 2011 11:05:31 AM org.Apache.myfaces.shared_impl.util.StateUtils reconstruct
SEVERE

そして私のlog4jパターンは次のようなものです:

2011-11-03 16:42:09,336 ["http-bio-8080"-exec-13] ERROR

一部のログはlog4jファイルログに表示されますが、すべてではありません。私が読んだことから、slf4jは、ログ出力をファネルするためにそれらのjarが必要です。何か案は?

9
user935265

依存関係としてjcl-over-slf4jを含めてみてください。 myfacesはおそらくcommons-loggingを使用しています。

slf4jドキュメントを確認してください: http://www.slf4j.org/legacy.html#jcl-over-slf4j

2
Stefan De Boey

StateUtils クラスがJava.util.logging(jul)を使用しているようです。他のmyfacesクラスもjulを使用するのは当然のことです。したがって、おそらくSLF4Jを介して7月のログを漏斗したいと思うでしょう。 レガシーAPIのブリッジング 、特にjul-to-slf4jブリッジをご覧ください。

jul-to-slf4jをインストールする際の使用方法については、 SLF4JBridgeHandler javadocs を参照してください。

12
Ceki

http://adfinmunich.blogspot.de/2012/03/how-to-configure-Tomcat-to-use-slf4j.html で説明されている手順に従ってTomcatサーバーを構成します。このブログエントリでは、Java.util.loggingをslf4jに置き換える方法について説明します(ファサードの背後でlog4jを使用)。

2
Florian Sager