Log4Jを使用してログを記録するはずの既存のWebアプリケーションを取得しました。私は言われたように正確に自分のワークスペースを構成しました。(DB接続、認証など...)何もログファイルに書き込まれていないことを除いて正常に動作します。他の同様のアプリケーションでは、問題のログはありません。Log4Jは何もログに記録しません
私は、アプリケーションが起動したときにWebSphereコンソールを見てきましたが、Log4Jがログを記録していない理由を示すエラーはありません。
これは私がこれを非常に奇妙な動作であると述べたが、それがなぜそれほどわからなかったのか、他のdev(これは一度このアプリケーションで作業したが、ログに失敗し、エラーを報告しない可能性があります。
私は設定ファイルとプロパティファイルをすべてオーバーしました。はと思われます。私はLog4Jがlog4j.xmlを読むことさえ決してないと思うが、私は確信していない。 Log4Jで作業して以来、しばらくお待ちしております。誰かがこのタイプの問題をトラブルシューティングするための良いヒントを持っていますか?
PS:このアプリケーションのインスタンスはさまざまなテスト/ QA/prodサーバーに展開されており、これらのインスタンスはすべて正常にログに記録されます。ローカルワークステーション上ではのみで、ロギングが黙って失敗するようです。
更新:だから、アプリケーションが展開されている方法に問題があるように見えるん。 クラスローダーモードを "Parent Last"に変更したところ、Log4Jファイルが少なくとも今読まれていることがわかりました。そして私が試みる最初のアクションはClassNotFoundException
org.apache.commons.logging.impl.Log4jFactory
が見つかりません。
第二の更新: 私は見知らぬ人に何かを気づいた...アプリケーションは、2つのWARプロジェクトを持っている - そのうちの一つは、UIのためであり、他には、いくつかのWebサービスのためのものです。 UI 用のプロジェクトは、です。操作はログファイルに正常に記録されます。 Webサービスプロジェクトは、ClassNotFoundException
で失敗するプロジェクトです。どちらもcommons-logging.jarがJavaEEモジュールの依存関係としてリストされており、いずれもプロジェクト固有のログ設定を持っていません(すべての設定ファイルはResourcesプロジェクトにあります)。
主な違いは、UIプロジェクトが(JARファイルとしてコンパイル済みの)かもしれないが既に必要なログ構成が含まれていることをいくつかの他の社内フレームワークが含まれており、違いがどこにあるかもしれないことがあるということです。
また、答えを使用しようとしました(「org.apache.commons.logging.impl.Log4jFactory」を含む1行のMETA-INF/servicesのorg.apache.commons.logging.LogFactoryというファイル)この質問から:Websphere all logs are going to SystemOut.logしかしそれは助けに見えなかった。
それロガーインスタンスのタイプは何? RollingFileAppenderの場合 – Woot4Moo
@ Woot4Moo:FileAppenderです。 – FrustratedWithFormsDesigner
設定ファイルを投稿できますか?すべての環境で同じ設定ですか? – evanwong