私のアプリケーションにlog4jを追加した後、アプリケーションを実行するたびに次のような出力が得られます。
log4j:WARN log4j:WARN ロガー(slideselector.facedata.FaceDataParser)のためのアペンダーが見つかりませんでした。 log4j:WARN 適切にlog4jシステムを初期化してください。
これは設定ファイルが足りないということらしいです。 この設定ファイルはどこにあるべきで、どのような内容から始めるのが良いのでしょうか?
私はデスクトップアプリケーションを開発するためにプレーンJavaを使用しています。そのため、ウェブサーバーなどはありません...。
Log4jは、デフォルトで、クラスパス上にlog4j.propertiesまたはlog4j.xmlと呼ばれるファイルを探します。 システム・プロパティを設定することにより、初期化にどのファイルを使用するかを制御することができますここ("Default Initialization Procedure" セクションを参照)。
例えば、以下のようになります。
java -Dlog4j.configuration=customName ....
log4jがクラスパス上のcustomNameと呼ばれるファイルを探すようにします。
もしあなたが問題を抱えているならば、私はlog4j.debugをオンにすることが役に立つと思います。
-Dlog4j.debug
それは、それ自身を初期化するためにどのファイルを使用したか、 どのロガー/アペンダーがどのように構成されたかなど、多くの有益な情報をSystem.outにプリントします。
設定ファイルは、javaのプロパティファイルまたはxmlファイルです。以下は、the log4j intro documentation pageから引用したプロパティファイルフォーマットのサンプルです。
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
ルート・アペンダーを持っているオンラインのlog4j.propertiesまたはlog4j.xmlを見つけて、それをあなたのクラスパスに置いてください。
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.rootLogger=debug, stdout
はコンソールにログを出力します。私は、後から調査できるように、ファイルにロギングすることを好みます。
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.maxFileSize=100KB
log4j.appender.file.maxBackupIndex=5
log4j.appender.file.File=test.log
log4j.appender.file.threshold=debug
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=debug,file
しかし、詳細なログを取るアプリケーションの場合、100KBは通常、1MBまたは10MBに増やす必要があります(特にデバッグの場合)。
個人的には複数のロガーを設定し、ルートロガーをデバッグではなく警告やエラーレベルに設定しています。
何を使って開発しているのですか?Apache Tomcatを使用していますか?
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyyMMdd HH:mm:ss.SSS} [[%5p] %c{1} [%t]] %m%n
私のJavaアプリにもこのようなプロパティがあります。