あなたが試すための2つの提案:
WebAppRootListenerをweb.xmlに追加します-これにより、Webアプリケーションのルートを指すシステムプロパティが構成されます(デフォルトはですwebapp.root
が、context-paramを使用してカスタマイズできます-Javadocリンクを参照)。 log4j.properties / xmlファイル:
<listener>
<listener-class>org.springframework.web.util.WebAppRootListener<listener-class>
<listener>
<!-- log4.appender.File=${webapp.root}/logs/web-app.log -->
または、web.xmlでLog4jConfigListenerを使用します(これは最終的にLog4jConfigurerに委任されます)-これは上記と同様ですが、カスタムlog4j configuファイルを定義でき、Webアプリケーションがlog4jconfigファイルの変更を監視することもできます実行時に作成され、ロガーを自動的に更新します。
<context-param>
<!-- Configure Log4J from the following config file location -->
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener<listener-class>
<listener>
また、上記のJavadocを詳しく読むことをお勧めします-Tomcatでの複数のWebアプリのデプロイとシステムプロパティの共有に関していくつかの落とし穴がありますが、これはすべて回避できます(各Webアプリにカスタムキーを提供するのではなく、デフォルト${webapp.root}