嗨,大家好。在大多数使用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条目,日志记录也可以正常工作。那目的是什么?

最佳答案

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

在我看来,通过Log4JConfigListener显式初始化log4j的主要优点是,它允许您使用servlet上下文参数来配置log4j配置文件的位置。根据应用程序的部署方式,这可能使某种类型的管理员用户可以在运行时更改配置,而不必在展开的WAR目录中进行深入研究。

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

10-07 19:44