私はJavaロギングAPIを初めて使用し、この問題についてサポートが必要です。アプリケーションの作成中に、構成ファイルがプロジェクトのルートフォルダーに保存されたため、-Djava.util.logging.config.file=logging.properties
switchを使用してプログラムを実行しました。しかし、その後、実行可能JARをエクスポートしました。今すぐログを設定するにはどうすればよいですか?-Dスイッチで設定ファイルへのパスを指定すると機能しません。
3 に答える
JVM 引数を MANIFEST.MFファイルに指定することはできないため、コマンド ラインまたはショートカットでロギング プロパティを指定する必要があります。
java -Djava.util.logging.config.file=logging.properties -jar yourjar.jar
それ以外の場合は、プロパティ ファイル (あなたの場合は logging.properties) を JAR にパッケージ化し、起動時にそれを読み取り、それらの設定をシステム プロパティに入れることができます。
javadocは次のように述べています。
さらに、LogManager は、初期構成の読み取りをより詳細に制御できる 2 つのオプションのシステム プロパティを使用します。
"java.util.logging.config.class" "java.util.logging.config.file"
これら 2 つのプロパティは、Preferences API を介して設定するか、「java」コマンドのコマンド ライン プロパティ定義として、または JNI_CreateJavaVM に渡されるシステム プロパティ定義として設定できます。
「java.util.logging.config.class」プロパティが設定されている場合、プロパティ値はクラス名として扱われます。指定されたクラスがロードされ、オブジェクトがインスタンス化され、そのオブジェクトのコンストラクターが初期構成の読み取りを担当します。(そのオブジェクトは、その構成を制御するために他のシステム プロパティを使用する場合があります。) 代替構成クラスは、readConfiguration(InputStream) を使用して LogManager のプロパティを定義できます。
そのため、システム プロパティを使用してjava.util.logging.config.file
、jar ファイルから構成ファイルを保存するか (何らかの奇妙な動作をデバッグまたは分析するためにログ プロパティをカスタマイズできるようにする場合は、これがおそらく良い考えです)、または保存します。 config ファイルを必要な場所 (jar ファイルなど) に配置し、java.util.logging.config.class
システム プロパティを使用して、jar ファイル内のファイルを読み取るクラスをロードおよびインスタンス化します ( を使用Class.getResourceAsStream()
)。