使用web.xml中的org.springframework.web.util.Log4jConfigListener条目进行初始化?

时间:2012-04-16 06:58:08

标签: java spring log4j

嗨,大家好。在大多数使用Spring的Java项目中,我在web.xml中找到了这个在服务器启动时执行的条目:

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

Log4jConfigListener的目的是什么?

在我的遗产项目中,我也可以看到此设置。然而,当我深入研究代码时,我发现在这个类或内部调用的其他类中没有做任何特别的事情   通过这门课。我确信在上面的代码片段背后肯定有一些好的目的,我错过了它。

在每个将日志放入文件的类中都是条目

private static final Log    log  = LogFactory.getLog(PoolManagerImpl.class);
log.debug("Number of connection pools to create = ["
    + connection.size() + "]");

即使我注释掉我的web.xml条目,日志记录也能正常工作。那是什么目的呢?

1 个答案:

答案 0 :(得分:7)

一旦web应用程序启动,Log4jConfigListener就会初始化Log4j“子系统”,而不是在需要时立即“懒惰地配置”它。

在我看来,通过Log4JConfigListener显式初始化log4j的主要优点是它允许你通过使用servlet上下文参数来配置log4j配置文件的位置;根据应用程序的部署方式,这可能会使某些管理员用户在运行时更改配置,而无需在爆炸的WAR目录中进行挖掘。

请参阅Log4jConfigListener的javadoc,更重要的是Log4jWebConfigurer,因为它可以完成实际工作。