2010-11-22 4 views
3

SLF4Jロギングファサードを使用するJava Webアプリケーションがあります。今日までは、Log4J実装を使用しています(Logbackへの切り替えを検討していますが)。 Log4Jは現在、クラスパスのルートに配置されているlog4j.xml設定ファイルを介して設定されています。SpringのJNDIによるログファイルの場所の制御?

私たちはJNDIを使用してアプリケーションの他の側面を構成しています。そのため、JNDIからSpring構成ファイルに文字列をプルする方法をよく知っています。

しかし、私はSpringの設定ファイルからLog4Jアペンダーを作成する方法を理解していません。さらに、Spring経由でLog4Jを完全に設定し、log4j.xml設定ファイルを一切スキップすることはできますか?これをプログラムで行う必要はありません。

私は、Log4jWebConfigurerというSpringクラスを見つけましたが、これはWARが爆発的に実行される必要があります(私が助けてくれれば欲しくないです)。また、ログファイルがweb-appディレクトリ内にあることを確かめてくださいそれ)。

答えて

2

まずJNDIを介してメインディレクトリを取得:

<jee:jndi-lookup id="myAppHome" jndi-name="myAppHome" /> 

は、その後、次のように春の式言語文でそのBeanを使用します。

<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>#{ myAppHome + '/conf/log4j.xml'}</value> 
     </list> 
    </property> 
</bean> 
関連する問題