初めてSLF4J-Log4jを使おうとしています。すべてのJavaクラスで、次のようにロガーを定義します。
_private org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(<TheClass>.class);
_
(そしてもちろん、_slf4-log4j12-1.6.4.jar
_ JARがクラスパス上にあることを確認します!)
しかし、logger.debug("Something interesting happened");
やlogger.error("An error occurred");
のようにロガーを使用しようとすると、ログファイルにそれらの出力が表示されません。ただし、例外は発生せず、アプリ(実際にはTomcatにデプロイされたWAR)は正常に実行されます。
プロジェクトに含まれている_log4j.properties
_ファイルは次のとおりです。
_# Set the root logger to DEBUG.
log4j.rootLogger=DEBUG
# MonitorLog - used to log messages in the Monitor.log file.
log4j.appender.MonitorAppender=org.Apache.log4j.FileAppender
log4j.appender.MonitorAppender.File=${catalina.base}/logs/MyAppMonitor.log
log4j.appender.MonitorAppender.layout=org.Apache.log4j.PatternLayout
log4j.appender.MonitorAppender.layout.ConversionPattern= %-4r [%t] %-5p %c %x - %m%n
# Use the MonitorAppender to log all messages.
log4j.logger.*=DEBUG,MonitorAppender
org.quartz.impl.StdSchedulerFactory=DEBUG,MonitorAppender
_
このWARは、Quartzを使用していくつかのジョブをcronします。そのため、最後のエントリが表示されます。
Tomcatのlogs /ディレクトリを確認すると、_MyAppMonitor.log
_が作成されているのがわかりますが、何も含まれていません(0バイト)。私はすべての典型的なcatalina.out、catalina-、およびlocalhost-ログもスキャンしましたが、私のログステートメントはどれも日の目を見ることはありません。
私は考えています:
log4j.properties
_が正しく構成されていない、またはlog4j.properties
_を見つけることができません(これについてはエラーや警告が表示されると思いますが)、またはMonitorAppender
というものを作成したことがないので、これが問題なのかどうか疑問に思っています。私はオンラインで見た例に従っていました誰かが私が間違っているところを見つけたり、これをトラブルシューティングするのを手伝ってくれますか?前もって感謝します!
君の log4j.properties
構成ファイルにはいくつかのエラーがあります。次のような簡単なもので試してください。
log4j.debug=true
log4j.rootLogger=DEBUG, CON
log4j.appender.CON=org.Apache.log4j.ConsoleAppender
log4j.appender.CON.layout=org.Apache.log4j.PatternLayout
log4j.appender.CON.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
あなたの質問の設定ファイルに関しては、ルートロガーにはアペンダーが添付されていません。また、ライン
log4j.logger.*=DEBUG,MonitorAppender
'*'はサポートされていないため、は無効です。