2012-10-25 8 views
8

私は以下のような状況があります。私は、各バッチファイルが同じjarのmain()を使ってjavaクラスを呼び出す異なるバッチファイルによって起動される2つのプログラムを実行できるようにする必要があります。私は各プログラムに独自のログを持たせたいと思います。しかし、2番目のプログラムは最初のインストーラですから、-Dlogback.configurationFile =/path/to/configファイルは、その場所がまだ存在しない可能性があるため、簡単に指定できません。ファイルではなくクラスパスリソースとしてログバック設定を指定する方法

Logback documentation seems to provide a solutionが、私はそれを動作させる方法の例を必要とする:

システムとして、デフォルトの設定ファイルの場所を指定 プロパティ

ご希望の場合は、あなたがの場所を指定することができますlogback.configurationFileという名前のシステム・プロパティーを持つデフォルト構成 ファイル。このプロパティの値 は、URL、クラスパス上のリソース、またはアプリケーションの外部ファイルへのパス にすることができます。

のjava -Dlogback.configurationFile = /パス/に/ config.xmlに chapters.configuration.MyApp1

誰もがlogback.configurationFileは次のようにクラスパス上のリソースとして定義されている例に私を指すことができますファイルシステムに反対ですか?

+0

変更したいログファイルの場合、ログファイルを変数として1つのlogback.xml構成ファイルに定義してください。これは、ほとんどのロギング設定が同じ場合に特に有効です。その後、ログファイル名はクラスパス内のリソースから読み取ることも、インストーラの呼び出しの一部とすることもできます。 – andygavin

答えて

10

my-logback.xmlをクラスパスエントリの1つのルートに置き、-Dlogback.configurationFile=my-logback.xmlと指定するだけです。内部的にはおそらくClassLoader#getResource(String name)を使用してファイルを取得します。詳細については、このメソッドのJavaDocを確認してください。以下の例で :

+0

これはうまくいくと思いますが、好奇心の中で、クラスパスのルートの下の場所ではどうしますか? –

+1

いいえ、動作しません –

+1

今実際に試してみましたが動作します。もう一度設定を確認できますか? –

1

この質問への答えは、供給リンクである

含まれる内容は、リソースとして、またはURLとして、ファイルとして参照することができます。

As a file: 
To include a file use the file attribute. You can use relative paths but note that the current directory is defined by the application and is not necessarily related to the path of the configuration file. 

As a resource: 
To include a resource, i.e a file found on the class path, use the resource attribute. 

<include resource="includedConfig.xml"/> 

As a URL: 
To include the contents of a URL use the url attribute. 

<include url="http://some.host.com/includedConfig.xml"/> 
関連する問題