Web-приложение простое - без spring'а, библиотеки commons-logging-1.0.4.jar и log4j-1.2.14.jar лежат в WEB-INF/lib
Пока гуглил нашёл подсказку:
Problem with Commons Logging / Log4j setup in spring webapp with tomcat 6 ,
где предлагают использовать listener'а сервелет контекса spring'овый org.springframework.web.util.Log4jConfigListener.
Тащить ради конфигурирования log4j ещё и spring - это overhead, на мой взгляд - поэтому пишем свой.
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.LogManager;
import org.apache.log4j.xml.DOMConfigurator;
public class Log4jInit implements ServletContextListener {
public void contextInitialized(final ServletContextEvent event) {
final ServletContext servletContext = event.getServletContext();
final String log4jConfigLocation = servletContext.getInitParameter("log4jConfigLocation");
final String log4jFilename = servletContext.getRealPath(log4jConfigLocation);
final DOMConfigurator configurator = new DOMConfigurator();
configurator.doConfigure(log4jFilename, LogManager.getLoggerRepository());
}
public void contextDestroyed(final ServletContextEvent event) {
// nothing
}
}
Замечание: Мне больше симпатизирует настойка log4j через xml - поэтому используем org.apache.log4j.xml.DOMConfigurator - для настройки log4j.properties потребуется org.apache.log4j.PropertyConfigurator
В web.xml прописываем нахождение log4j.xml и добавляем listener:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>Log4jInit</listener-class>
</listener>
1 комментарий:
Спасибо, помогло. Пол часа голову ломал - что за хрень творится :)
Отправить комментарий