Spring - управление расположением файла журнала через JNDI?

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

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

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

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


person HDave    schedule 22.11.2010    source источник


Ответы (1)


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

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

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

<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>
person HDave    schedule 24.11.2010