17

次のマニフェストを含むjarファイルがあります

Manifest-Version: 1.0  
Created-By: 1.7.0_07 (Oracle Corporation)  
Main-Class: test.Main  
Class-Path: ./log4j.properties lib/log4j-1.2.17.jar 

私は次のようにクラスを実行します

java -jar test.jar

そして、これは私のフォルダです

lib
log4j.properties
test.jar

log4j プロパティ ファイルが表示されないのはなぜですか? これは私が見るものです

log4j:WARN No appenders could be found for logger (test.Main).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

ありがとうございました

解決策:マニフェストのクラスパスをこれに変更しました

Class-Path: . lib/log4j-1.2.17.jar 
4

3 に答える 3

17

引数を使用して JVM を開始することもできます。

-Dlog4j.configuration=file:"./your/properties/path/log4j.properties"

外部ログ プロパティの任意の場所を指定します。ある特定のプロジェクトでこれをよく使用しました。

于 2012-10-05T13:36:19.647 に答える
11

プロパティ ファイルはクラスパスに含まれません。ここに示すように、プロパティ ファイルを指定してコードから呼び出す必要があります。

編集: ディレクトリ構造を使用して、次のように呼び出します。

PropertyConfigurator.configure("log4j.properties");

EDIT2:

また、appender を提供する必要があります。

log4j.rootLogger=DEBUG, Appender1
log4j.logger.[logger-name]=level, Appender1
log4j.appender.Appender1=org.apache.log4j.ConsoleAppender
log4j.appender.Appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.Appender1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

ロギングをより細かく制御したい場合は、最初の行 (root looger) を削除し、[logger-name] の代わりに最上位のパッケージを配置する 2 番目の行を配置して、そのパッケージ内のすべてのクラスがロギングを使用できるようにします。

複数のアペンダーを定義して、その方法で異なるクラスに割り当てることができます。

于 2012-10-05T13:31:36.387 に答える
1

PropertyConfigurator.configure(ABC.class.getResourceAsStream("log4j.properties"))私は正しく機能しましたが、基本的にはLog4jプロパティファイルをソースコードフォルダー(Javaクラスの隣)に配置する必要があります。

getResourceAsStream("resources/log4j.properties")または、外側に置いて、メソッドに適切なパスを与えることができます

于 2016-01-20T23:43:02.120 に答える