たぶんこれを聞くのは馬鹿げているように見えますが、私は混乱しています。 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が見つかりませんでした。
これに関する助けはありますか?
これらのメッセージはややこしいので、人々がより明確にするためにこれを作成したほど十分です: 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
にありました。
クラスパスフォルダーに独自のlog4j.properties
を作成する必要があります。
既に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
以下の文がクラスに存在する場合、log4j.propertiesはJava source(src)folderにあります。jar実行可能ファイルの場合は、別個のファイルではなくjarにパックする必要があります。
static Logger log = Logger.getLogger(MyClass.class);
おかげで、
警告ロガーのアペンダーが見つかりませんでしたは、 _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を使用している場合は、_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
_