2012-04-29 2 views
8

: アプリケーションを作成している間、私の設定ファイルは、プロジェクトのルートフォルダに保存されているので、私は、プログラムを実行するために-Djava.util.logging.config.file=logging.propertiesスイッチを使用しました。 しかし、私は、実行可能なJARを輸出しました。 ロギングを今設定する方法は? -Dスイッチを使って設定ファイルへのパスを指定すると、うまくいきません。?私は、JavaロギングAPIに新しいですし、この問題を持ついくつかの助けを必要とし

答えて

6

あなたは、コマンドラインまたはショートカットでログプロパティを指定する必要がありますので、あなたはMANIFEST.MFファイルにJVM引数を指定することはできません。

java -Djava.util.logging.config.file=logging.properties -jar yourjar.jar 

をそれ以外の場合は、プロパティファイルをパッケージ化できJARで(あなたのケースではlogging.properties)、 起動時にこれを読んで、システムのプロパティにこれらの設定を置きます。

3

The javadocは言う:これら二つの特性は、プリファレンスを介して設定することができる

"java.util.logging.config.class" 
"java.util.logging.config.file" 

:また

、LogManagerの初期設定を読み取るをより細かく制御できるよう 2つのオプションのシステムプロパティを使用してAPI、または「javaの」コマンドに対するコマンド 行プロパティの定義として、またはシステムプロパティとして 定義はのJNI_CreateJavaVMに渡されます。

"java.util.logging.config.class"プロパティが設定されている場合、 プロパティ値はクラス名として扱われます。指定されたクラスは がロードされ、オブジェクトがインスタンス化され、そのオブジェクトのコンストラクタ は初期設定で読み込むための責任があります。 (つまり、オブジェクト は、その設定を制御するために、他のシステムプロパティを使用してもよい。) 代替構成クラスは、LogManagerのにプロパティを定義するreadConfiguration(入力ストリーム) を使用することができます。

ので、java.util.logging.config.fileシステムプロパティを使用し、デバッグするために、ログのプロパティをカスタマイズしたり、いくつかを分析することができるようにしたい場合は、おそらく良いアイデアですjarファイルのうち、設定ファイルを(保存のいずれか奇妙な振る舞い)、または設定ファイルを(jarファイルなどに)保存し、java.util.logging.config.classシステムプロパティを使用して、jarファイルのファイルを読み取るクラスをロードしてインスタンス化します(Class.getResourceAsStream()を使用)。

関連する問題