Logback は、この問題に対処する実行可能なソリューションです。これを log4j で動作させるためにさまざまなハックを調べた後、Logback に切り替えることにしました。Web アプリケーション内の Logback jar で次の構成を使用しました。
外部ファイルを含む webapp 内の Logback ファイル:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="10 seconds">
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<contextName>${project.artifactId}</contextName>
<jmxConfigurator />
<include file="${logback.configuration.filepath}" />
</configuration>
${logback.configuration.filepath}
Maven フィルタリング中に、構成ファイルの webapp の外部にある正確なパス ( /opt/server/conf/loback.included.confなど) に置き換えられます。
次に、の内容logback.included.conf
(このファイルはプロジェクトの一部であり、 で配信されるbuild-helper:attach-artifact
ため、${project.artifactId}
Maven フィルタリング中にも置き換えられます):
<?xml version="1.0" encoding="UTF-8" ?>
<included>
<appender name="file" class="ch.qos.logback.core.FileAppender">
<file>/var/log/server/${project.artifactId}.log</file>
<encoder>
<pattern>[@/%contextName] %date{ISO8601} [%-5level] %thread:[%logger] %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="file" />
</root>
</included>
唯一の制限として、含まれるファイルの内容は、インクルーダーの内容に準拠している必要があります。実際にルールを書くだけです。