2013-08-01 21 views
1

简而言之:如何在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?

只要我不需要它,最简单的方法就是将这个记录器干干净净地关掉它?

回答

1

为了摆脱这些消息的,创建一个名为log4j.xml有以下内容的文件:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration threshold="off"> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <param name="Threshold" value="off" /> 
    </appender> 
    <appender name="rolling-file" class="org.apache.log4j.ConsoleAppender"> 
     <param name="Threshold" value="off" /> 
    </appender> 
</log4j:configuration> 

滴在“默认包”的文件。在IDE中,这通常是一个名为/src的文件夹。在Web应用程序设计中,这将在构建期间映射到/WEB-INF/classes

1

摆脱此消息的方法是正确设置Log4J配置。创建一个log4j.properties文件并将其置于WEB-INF/classes之下,如here所述。

相关问题