web-dev-qa-db-ja.com

ログバックでポータブルな方法でユーザーのホームディレクトリにログファイルを配置するにはどうすればよいですか?

ログファイルをユーザーのホームディレクトリに置きたいのですが。

ポータブルな方法でそれを行う方法、つまりWindows、Linux、Macで作業する方法は?

11
Dims

ログバックドキュメント によると、${user.home}を使用する必要があります。これは、OSから直接取得されるJVMに存在する環境変数です(したがって、移植可能です)。

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${user.home}/logback.log</file>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
    </encoder>
</appender>
25
xav

ロギングのセットアップは、実際にはシステムの構成コンポーネントです。最善の策は、各システムの構成を分離(およびロード)することです。これを行う良い方法の1つは、Apache Commons Configurationのようなものを使用することです。これにより、1回限りのログバック構成を見つける場所を示す一連のプロパティをトラバースできます。

ログバック構成ファイル名を識別するために、スキームのような「優先度」を使用します。 Apache Commons構成を使用して、次のようなスキームを指定します。

<configuration config-name="master-config">
<!--  start here, properties encountered in the first file would be ignored in the last file -->
<properties fileName="/opt/config/log.properties" optional="true"/> 
<properties fileName="${sys:user.home}/config/product/log.properties" optional="true"/>
<properties fileName="com/company/product/config/log.properties"/>    

私のローカルWindows開発ボックス($ {sys:user.home} /config/product/log.properties)ファイルは次のようになります。

logbackConfigLocation=C:/Users/dan/config/product/logback.xml 

次に、各システム/ユーザーは、必要に応じてロギングを構成/セットアップできます。サーブレットコンテキスト内から、ログバックをロードして初期化できます。

0
Dan F

追加するだけで、パスはシステムプロパティとして定義するものであれば何でもかまいません。例えば、

Java -Dmylog.root=somelocation ...

そして、logbackconfigはそのプロパティを尊重できます。

<appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>${mylog.root}/logback.log</file>

0
Siraj Sherriff