<bean id="log4jInitialization"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="org.springframework.util.Log4jConfigurer" />
<property name="targetMethod" value="initLogging" />
<property name="arguments">
<list>
<value>classpath:log4j-${environment}.properties</value>
</list>
</property>
</bean>
少数集団ソリューション -
Beanを定義する際、${environment}
の値が(env
を想定)フェッチされる場所からいくつかのプロパティファイルが存在しなければなりません。その値をファイル名に追加することに注意する必要があります。あなたのプロジェクトリソースの下に存在する必要があります。あなたの場合、log4j-env.properties
という名前のファイル。あなたはweb.xml
であなたのLog4jのリスナーを設定でき
<property name="arguments">
<list>
<value>#{environment + '/log4j.properties'}</value>
</list>
</property>
- として代わりに値を変更するように
は、別のディレクトリの下にそれらを分類しながら、さまざまな環境のログの異なる方法を使用しての方法を勧めますspring-context.xml
の代わりに、Springが起動する前に起動しています。など -
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/${environment}/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
ソースからInitializing Log4J with Spring?
注 - かを調べるHow to replace a value in web.xml with a Maven property?
に従って、実行時に
environment
に正しい値を割り当てる方法について'environment'の値は(おそらく' 'dev'や' prod'のように、tomcatの下にあるすべてのファイルの "environment"をテキスト検索してみるか、 'ps'情報を見て)、' log4j-dev.xml'(またはその他実際に解決される環境によって異なります)を、デプロイされたWebアプリケーションの 'WEB-INF/classes'ディレクトリにコピーします。 – heeneneeプロパティ '$ {environment}'は存在しますか?あなたは[mcve]を作ってSpringの設定を投稿できますか? – Tunaki