2012-04-10 2 views
1

Весной у меня есть slf4j с log4j для разрешения регистрации.Установить параметр пути файла log4j во время выполнения

Я установил относительный путь в конфигурации log4j.xml, но когда я выполняю приложение в Netbeans Tomcat и независимом Apache Tomcat, относительный путь отличается, и я должен изменить вручную.

Моя идея - получить контекстный реальный путь от контроллера Spring и установить его в конфигурации log4j во время выполнения. Но я не знаю ...

Как изменить параметр пути к файлу log4j из Spring Controller?

ответ

2

Два предложения для вас попробовать:

Добавить WebAppRootListener ваш web.xml - это настроит системное свойство, указывающее (по умолчание для webapp.root, но вы можете настроить с помощью контекстных параметров - см ссылки Javadocs) в корневой каталог вашего веб-приложения, которые затем можно использовать в файле log4j.properties/xml:

<listener> 
    <listener-class>org.springframework.web.util.WebAppRootListener<listener-class> 
<listener> 

<!-- log4.appender.File=${webapp.root}/logs/web-app.log --> 

Или использовать Log4jConfigListener в вашем web.xml (который в конечном счете делегатов на Log4jConfigurer) - это аналогично приведенному выше, но позволяет определить пользовательский log4j conf МГС файл, а также позволяет для вашего веб-приложения для мониторинга конфигурационный файл log4j для изменений, сделанных во время выполнения и автоматически обновлять ваши регистраторы:

<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> 

Я также рекомендовал бы вам прочитать Javadocs для выше в деталях - есть некоторые getchas в отношении развертывания нескольких webapps в Tomcat и совместного использования свойств системы, но все это можно обойти (предоставление настраиваемого ключа для каждого webapp, а не по умолчанию ${webapp.root}

+0

Nice Chris, отлично работайте! Спасибо! :) – Dani

Смежные вопросы