1. ホーム
  2. java

[解決済み] log4jのシステムを正しく初期化してください。Webサービス実行中

2022-03-03 07:29:24

質問

こんなことを聞くのは馬鹿らしいかもしれませんが、私は混乱しています。私が参照したのは Log4jのプロパティを設定する が、役に立ちそうもありません。

私は簡単なWebサービスHelloWorldを書きました。そして、それを実行している間、私はこのようなエラーを取得します。

log4j:WARN logger (org.apache.axis.transport.http.AxisServlet) 用のアペンダーが見つかりませんでした。 log4j:WARN log4j システムを正しく初期化してください。

なぜこのようなことが起こるのか、よくわかりません。

私は、Eclipseを使用してWebサービスを生成し、Tomcat 6.0にデプロイしています。私は Axisデベロッパーズガイド で、それによると

log4j.configuration=log4j.properties このシステム・プロパティを使用して、Log4J設定ファイルの名前を指定します。指定しない場合、デフォルトの設定ファイルは log4j.properties です。log4j.properties ファイルは、axis.jar で提供されます。

の中にlog4j.propertiesは見つかりませんでした。 axis.jar .

この件に関して何かヘルプはありますか?

解決方法は?

これらのメッセージは何かと厄介なので、わかりやすくするためにこのようなものが作られました。 https://issues.apache.org/bugzilla/show_bug.cgi?id=25747

それらについて厄介なのは、警告はLog4jがその log4j.properties (または log4j.xml ) ファイルがある場合だけでなく、そのファイルは問題ないが、その内容が設定の観点から完全でない場合にも使用できます。

以下の段落は、ここから引用しています。 http://svn.apache.org/repos/asf/logging/log4j/tags/v1_2_9/docs/TROUBLESHOOT.html

ロギング出力は、アペンダーを使用してターゲットに書き込まれます。もし、アペンダーがカテゴリーやその祖先のどれにもアタッチされていない場合、ログを取ろうとすると次のようなメッセージが表示されるでしょう。

log4j: No appenders could be found for category (some.category.name).
log4j: Please initialize the log4j system properly.

Log4jには、デフォルトのロギング・ターゲットがありません。それは、すべてのカテゴリーがアペンダーを継承することができることを確実にするために、ユーザーの責任です。これは、ルート・カテゴリーにアペンダーを添付することによって、簡単に達成することができます。

ルートロガーの設定方法に関する情報はこちら( log4j.rootLogger ) にあるlog4j ドキュメント のように、基本的にはファイルの先頭にこのような簡単なものを追加します。

log4j.rootLogger=debug, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

これで、起動時に表示される WARN メッセージが解消されます。 (という名前のアペンダーを持っていないことを確認してください)。 stdout また、ルートロガーに与えるレベルに注意してください。 debug は非常に冗長で、アプリ内のすべてのライブラリがコンソールに何かを書き始めることになります)。

についてですが log4j.properties / log4j.xml に置くことをお勧めします。 /WEB-INF/classes 様々な調整(ログの有効化/無効化、ログレベルの変更など)のためにそれを公開することが重要であるためです。クラスパスにある JAR の中に置くこともできますが (コメントで指定したとおりです)、 アーカイブに含まれることになり (できればアーカイブの中の適切な場所に置きたいのですが)、 その場合は /WEB-INF/classes .