web-dev-qa-db-ja.com

log4jシステムを適切に初期化してください。 Webサービスの実行中

たぶんこれを聞くのは馬鹿げているように見えますが、私は混乱しています。 Log4jプロパティの設定 を参照しましたが、役に立たないようです。

簡単なWebサービスHelloWorldを作成しました。そして、実行中に私はこのようなエラーを取得しています:

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

なぜ起こっているのか分かりません。

Eclipseを使用してWebサービスを生成し、Tomcat 6.0にデプロイしています。 Axis Developer's Guide を確認し、それらに従って

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

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

これに関する助けはありますか?

22
java_enthu

これらのメッセージはややこしいので、人々がより明確にするためにこれを作成したほど十分です: 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 documentation にあります。基本的に、ファイルの先頭に次のような単純なものを追加します。

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にありました。

40
user159088

クラスパスフォルダーに独自のlog4j.propertiesを作成する必要があります。

5
flash

既にlog4j.propertiesを作成している場合は、実行中に見つかるようにそのパスをクラスパスに追加します。
はい、thingyはクラスパスでこのファイルを検索します。
あなたは軸を見たがそれを見つけられなかったと言ったので、私はあなたがlog4j.propertiesを持っていないと仮定しているので、ここに粗雑だが完全な例があります。
どこかに作成して、クラスパスに追加します。たとえば、c:/proj/resources/log4j.propertiesに配置します

クラスパスに.......; c:/ proj/resourcesを追加するだけです

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.Apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.Apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.Apache.log4j.RollingFileAppender
log4j.appender.file.File=c:/project/resources/t-output/log4j-application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.Apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
2
AlexD

以下の文がクラスに存在する場合、log4j.propertiesはJava source(src)folderにあります。jar実行可能ファイルの場合は、別個のファイルではなくjarにパックする必要があります。

static Logger log = Logger.getLogger(MyClass.class);

おかげで、

1
Kannan

警告ロガーのアペンダーが見つかりませんでしたは、 _log4j_ ロギングシステムを使用しているが、まだ追加していない構成ファイルへのアペンダー(FileAppender、ConsoleAppender、SocketAppender、SyslogAppenderなど)または構成ファイルが欠落しています。

Log4jを設定する方法は3つあります。プロパティファイル(_log4j.properties_)、XMLファイル、およびJava code(rootLogger.addAppender(new NullAppender());)を使用)。

プロパティファイルが存在する場合(Solrのインストール時など)、このファイルを classpath ディレクトリ内に配置する必要があります。

クラスパス

以下に、クラスパス値を決定するためのいくつかのコマンド提案を示します。

_$ echo $CLASSPATH
$ ps wuax | grep -i classpath
$ grep -Ri classpath /etc/tomcat? /var/lib/tomcat?/conf
_

またはJavaから:System.getProperty("Java.class.path")

Tomcat

Tomcatを使用している場合は、_log4j.properties_を_/usr/share/tomcat?/lib/_または_/var/lib/tomcat?/webapps/*/WEB-INF/lib/_フォルダーに配置できます。

ソル

参考のため、Solr _log4j.properties_は次のようになります。

_#  Logging level
solr.log=logs/
log4j.rootLogger=INFO, file, CONSOLE

log4j.appender.CONSOLE=org.Apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.layout=org.Apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n

#- size rotation with log cleanup.
log4j.appender.file=org.Apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9

#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.Apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n

log4j.logger.org.Apache.zookeeper=WARN
log4j.logger.org.Apache.hadoop=WARN

# set to INFO to enable infostream log messages
log4j.logger.org.Apache.solr.update.LoggingInfoStream=OFF
_
0
kenorb