简而言之:如何在Web应用程序中使用的第三方jar中配置某些Log4j记录器,以便停止写出类似如何在Web应用程序中禁用log4j(关闭WARN消息)
的警告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
细节:
我正在编写一个Tomcat Web应用程序,它将使用Apache ActiveMQ。除了的ActiveMQ,全5.5.1.jar我不得不把下列库的类路径上摆脱类路径问题:
- 的log4j-1.2.15.jar
- SLF4J的API -1.5.11.jar
- SLF4J-log4j12-1.5.11.jar
现在我的应用程序开始打印警告,像上面的那一个。有a link on the Apache ActiveMQ web site,但不幸的是它坏了,Log4j wiki处于离线状态。
我试图创建一个名为的log4j.xml文件描述here并把它放在WEB-INF/目录(其中我希望它属于),但我也试图把它放在“默认包“与我的源代码(即WEB-INF/classes/)。我也尝试向文件中添加XML标头,如我所见here。他们中的任何一个都无法在任何位置工作我在其他地方看过,必须通过将-Dlog4j.configuration=
参数传递给JVM来传递位置,但不能在Web应用程序上下文中使用该参数。 A Log4j for web application tutorial显示了如何使用web.xml对其进行配置,但要求库包含扩展HttpServlet
的类。我猜在Active MQ中没有这样的类,即使我如何找到它?
也许我正在吠叫完全错误的树,我不必配置Log4j本身,而是Slf4j然后会为我默默配置Log4j?
只要我不需要它,最简单的方法就是将这个记录器干干净净地关掉它?