嗨,大家好。在大多数使用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条目,日志记录也能正常工作。那是什么目的呢?
答案 0 :(得分:7)
一旦web应用程序启动,Log4jConfigListener
就会初始化Log4j“子系统”,而不是在需要时立即“懒惰地配置”它。
在我看来,通过Log4JConfigListener显式初始化log4j的主要优点是它允许你通过使用servlet上下文参数来配置log4j配置文件的位置;根据应用程序的部署方式,这可能会使某些管理员用户在运行时更改配置,而无需在爆炸的WAR目录中进行挖掘。
请参阅Log4jConfigListener的javadoc,更重要的是Log4jWebConfigurer,因为它可以完成实际工作。