2017-12-21 10 views
1

logback.xmlファイルにlogback.propertiesファイルが表示されないという問題があります。Java実行ファイルjar logback-spring.xmlにlogback.propertiesファイルが表示されない

Mavenを使用してビルドされた実行可能なjarファイル(foo.jarと呼ぶ)を実行しようとしています。 foo.jarを実行しようとすると、logback.propertiesファイルが見つからないため失敗します。このファイルはfoo.jar内に存在し、logback.xmlファイルの兄弟ファイルです。

logback.propertiesファイルをfoo.jar内で手動で移動させてみました。しかし、私が見つけたのは、logback.propertiesというファイルのコピーをjarファイルの外側にあるjarファイルのディレクトリに置いた場合です。

誰かがfoo.jarをプロパティファイルの内部で探す方法を説明できますか?

例:logback.xmllogback.propertiesの両方のファイルが、foo.jarのパス「foo/bar」にあるとします。

プロパティファイルを検索するにはどうすればよいですか?

サイドノート:これはSpringのことはまったく知らないので、悲しみを引き起こす障害であるかどうかは分かりません。

マイlogback.xmlファイルがLogback docsから

<property file="logback.properties" /> 

答えて

1

によってlogback.propertiesファイルを参照

はまたの代わりにクラスパス上のリソースを参照することがあり(実際には春とは関係ありません)ファイル。

<configuration> 
    <property resource="resource1.properties" /> 
    ... snip ... 
</configuration> 

これは(あなたがMavenを使用している場合には、SRC /メイン/リソースでは、ある)あなたのクラスパスのルートにプロパティファイルを検索してみます。 <property file="..."/>の構文では、アプリケーションの現在の作業フォルダを基準にファイルシステム内のファイルを検索するため、記述したようにJARの横にファイルがあると正しく検索されます。

+0

私は別の質問があります。 の両方を指定すると、リソースは常にファイルをトランプしたり、トランプリソースをファイルしたりしますか、それとも最後に定義されているものなのでしょうか? – Elijah

+0

それを試して、私はどのような振る舞いになるのか分かりません。各ライブラリには、通常、正しい動作が何であるかという独自の考えがあります。つまり、どのプロパティの優先順位が優先される階層はないと思うので、後者のオプション - 「最後に定義されたもの」は最も可能性が高いです。 –

+1

最後にリストされたものはどれもロードされるように見えます。しかし、両方のタグを持つためには、両方のファイルが必要です。したがって、 'file'によって参照されるものはシステム上にある必要がありますが、私はそれを空白にしておきます。内部ジャープロパティーファイルを使用するためにリソースを最初に定義することができ、それをオーバーライドしたい場合は、サーバー上にファイルを作成するだけなので、これはクールです。この方法でも動的ロードがサポートされているかどうか試して見てみましょう。 – Elijah

関連する問題