为什么要在Log4jConfigListener之后注册ContextLoaderListener

时间:2013-09-11 09:12:56

标签: java spring

根据Spring Doc API http://docs.spring.io/spring-framework/docs/current/javadoc-api/index.html?org/springframework/web/context/ContextLoaderListener.html -

此(ContextLoaderListener)侦听器应在web.xml中的Log4jConfigListener之后注册

我不知道为什么首先要注册Log4jConfigListener?

2 个答案:

答案 0 :(得分:4)

文档不会深入了解他们对此订单所声明的偏好。我会假设建议使用此顺序,以便在注册ContextLoaderListener之前配置日志记录属性,这将允许在注册期间正确记录调试消息。

答案 1 :(得分:1)

使用自定义log4j配置时(例如,每个应用程序log4j-app.xml),这需要在其他任何内容之前进行引导。如果不是log4j将使用全局log4j.xml(或默认值)而不是自定义文件进行引导。

ContextLoaderListener(或许多其他类)将触发引导log4j,在这种情况下,您可以按照预期使用不同的配置。还有一个额外的风险,Log4jConfigListener在应用程序关闭时试图销毁/关闭全局log4j系统...(如果你不在你的应用程序中发送log4j但依赖你的应用程序服务器,可能会出现这种情况发货log4j版本。)