简而言之:如何在 Web 应用程序中使用的第三方 jar 中配置一些 Log4j 记录器,以便它停止写出警告,例如
log4j:WARN No appenders could be found for logger (org.apache.activemq.transport.WireFormatNegotiator).
log4j:WARN Please initialize the log4j system properly.
并防止干净的关机引发错误,例如
Exception in thread "InactivityMonitor WriteCheck" java.lang.NullPointerException
Exception in thread "InactivityMonitor ReadCheck" at java.util.TimerThread.run(Unknown Source) java.lang.NullPointerException
细节:
我正在编写一个使用 Apache ActiveMQ 的 Tomcat Web 应用程序。除了activemq-all-5.5.1.jar我必须将以下库放在类路径上以摆脱类路径问题:
- log4j-1.2.15.jar
- slf4j-api-1.5.11.jar
- slf4j-log4j12-1.5.11.jar
现在我的应用程序开始打印上面那个警告。Apache ActiveMQ 网站上有一个链接,但不幸的是它已损坏,并且Log4j wiki已离线。
我尝试按照此处所述创建一个名为log4j.xml的文件并将其放在WEB-INF/目录中(我希望它属于该目录),但我也尝试将其与我的源代码一起放入“默认包”中(即WEB-INF/classes/)。我还尝试了向文件中添加 XML 标头的方法,正如我在此处看到的那样。它们都不能在任何一个位置工作。我在其他地方读到,必须通过将参数传递给 JVM 来传递位置,但这不能在 Web 应用程序上下文中使用。用于 Web 应用程序的Log4j 教程展示了如何使用web.xml对其进行配置,但这需要库包含一个扩展的类-Dlog4j.configuration=
HttpServlet
. 我想 Active MQ 中没有这样的类,即使,我怎么能找到它呢?
也许我在吠叫完全错误的树,我不必配置 Log4j 本身,而是 Slf4j 它将默默地为我配置 Log4j?
只要我不需要它,哪种是干净地关闭该记录器的最简单方法?