初めて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
getが作成されているのがわかりますが、何も含まれていません(0バイト)。私はすべての典型的なcatalina.out、catalina-、およびlocalhost-ログもスキャンしましたが、私のログステートメントはどれも日の目を見ることはありません。
私は考えています:
log4j.properties
正しく構成されていない、または- slf4j-log4jが正しく構成されていない、または
- これはクラスパスの問題であり、おそらくWARが見つけることができません
log4j.properties
(これについてはエラーまたは警告が表示されると思いますが)、または - (API自体)SLF4Jを正しく使用していない、または
- 私は実際にと呼ばれるものを作成したことがない
MonitorAppender
ので、これが問題であるかどうか疑問に思います。オンラインで見た例をたどっていました
誰かが私が間違っているところを見つけたり、これをトラブルシューティングするのを手伝ってくれますか?前もって感謝します!