2013-08-01 19 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所述。

相關問題