web-dev-qa-db-ja.com

JVM引数を介したlog4jの構成?

Log4jを正しく実行するには、JVMの引数として設定/渡す必要がある変数は何ですか?そして、適切に私は文句を言わず、コンソールに印刷しないことを意味します。典型的な例を見ることができますか?

注:アプリケーションでlog4j.propertiesファイルを作成しないようにする必要があります。

122
jconlin

Log4j構成ファイルはありますか?を使用して参照するだけです

-Dlog4j.configuration={path to file}

{ファイルへのパス}の前にfile:を付ける必要があります

151
Brian Agnew

ソリューションは、次のJVM引数を使用しています。

-Dlog4j.configuration={path to file}

ファイルがクラスパス(Tomcatの場合はWEB-INF/classes)ではなく、ディスク上のどこかにある場合は、次のようにfile:を使用します。

-Dlog4j.configuration=file:C:\Users\me\log4j.xml

詳細と例はこちら: http://logging.Apache.org/log4j/1.2/manual.html

157
30thh

これは(おそらくlog4j2で)変更されたようです:

-Dlog4j.configurationFile=file:C:\Users\me\log4j.xml

参照: https://logging.Apache.org/log4j/2.x/manual/configuration.html

25
D. L.

私はこれがすでに答えられていることを知っていますが、あなたが言ったので、これはあなたが探しているものとまったく同じではないので、次の代替案を指摘したいと思います:

プロパティまたはxmlファイルの代わりに構成クラスを使用することもできます。

-Dlog4j.configuratorClass=com.foo.BarConfigurator

詳細については、 http://logging.Apache.org/log4j/1.2/manual.html を参照してください。

20
Tim Büthe

一般的に、log4j.propertiesファイルがクラスパスにある限り、Log4jはJVMの起動時に自動的にそれを選択するだけです。

11
Natalia

2015年以降、パーティーに遅れて、Log4J 1.xは EOL に達しました。

Log4J 2.x以降では、 JVMオプション-Dlog4j.configurationFile=<filename>になります


PS <filename>は、他の回答で示唆されているように、file:なしのクラスパスwithoutに関連するファイルです。

7
Vineet Menon

相対パスも大丈夫です:

Java -Dlog4j.configuration=file:".\log4j.properties" -jar com.your-1.0-SNAPSHOT.jar

または

Java -Dlog4j.configuration=file:".\log4j.xml" -jar com.your-1.0-SNAPSHOT.jar
0
ridox