0

log4j:

# Root logger option
log4j.rootLogger=ERROR, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${fileName}
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
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

アプリケーションを実行するときに、これをメイン メソッドに含めますPropertyConfigurator.configure("log4j.properties");

問題:

  1. プロジェクトのルートに log4j.properties ファイルを保持し、プロジェクトを実行可能な jar としてエクスポートしようとしましたが、その内容を抽出するか、再度インポートすると、log4j.properties が実際には表示されません。log4j を jar にバンドルするにはどうすればよいですか?

  2. log4j ファイルを src フォルダーの下に配置しました。しかし、アプリを実行すると、以下の例外が発生します。log4j ファイルが移動された場合でも log4j が機能するためには、何を変更する必要がありますか?

これは私が得る例外です:

log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: 
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at org.apache.log4j.FileAppender.setFile(FileAppender.java:290)
    at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:194)
    at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:164)
4

1 に答える 1

0

log4j.properties は、理想的には jar ファイル自体の一部であってはなりません。これを提供するのは、クライアント (または API のユーザー) の責任です。

質問の 2 番目の部分に答えるには、${filename} を C:\mylogs.log のようなパスに置き換えてみてください。

于 2013-10-28T11:09:59.320 に答える