2010-11-22 2 views
3

У меня есть веб-приложение Java, которое использует фасад регистрации SLF4J. На сегодняшний день мы используем реализацию Log4J под ним (хотя мы рассматриваем переход на Logback). Log4J в настоящее время настроен через файл конфигурации log4j.xml, который помещается в корень нашего пути к классам.Управление расположением файла журнала через JNDI весной?

В любом случае мы используем JNDI для настройки других аспектов нашего приложения, поэтому я очень хорошо знаю, как установить это и вытащить строку из JNDI в файл конфигурации Spring.

Однако я затрудняюсь выяснить, как создать приложение Log4J из файла конфигурации Spring. Еще лучше, можно ли полностью настроить Log4J через Spring и вообще пропустить файл конфигурации log4j.xml? Я надеюсь, что мне не нужно делать это программно.

Я нашел класс Spring под названием Log4jWebConfigurer, но для этого требуется, чтобы WAR запускался взорван (не хочу, чтобы я мог помочь), а также что файл журнала находится в каталоге веб-приложения (определенно не хочу что).

ответ

2

Сначала получите основную директорию через JNDI:

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

Затем использовать этот компонент в заявлении языка Spring Expression в следующим образом:

<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> 
Смежные вопросы