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

M S*_*ach 3 java spring log4j

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

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)

目的是Log4jConfigListener什么?

在我的遗留项目中,我也可以看到此设置.但是当我深入研究代码时,我没有在这个类或本类内部调用的其他类中找到任何特殊的东西.我相信在上面的代码片段背后肯定有一些好的目的,我错过了它.

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

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

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

Cha*_*ony 7

Log4jConfigListener初始化Log4j的"子系统"尽快的web应用启动时,而不是"懒洋洋地配置"它只要它是必要的.

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

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