2009-11-12 116 views
52

我遇到了以下錯誤:如何使用Log4j更改軟件包的日誌級別?

http://issues.apache.org/jira/browse/AXIS2-4363

它規定如下:

只有當org.apache.axiom日誌級別 是DEBUG所以 解決方法出現此錯誤是設置日誌級別> DEBUG。

我的問題是如何去做這件事?我一直在爲我的目錄搜索一個屬性文件或其他東西,我一直在尋找是否有我可以在代碼中設置的東西,但我真的不知道我在做什麼。我正在桌面上運行一個控制檯應用程序,同時嘗試使其工作。

更新1:我注意到我的Axis2目錄在其根目錄中有它自己的log4j.properties文件。這是安全的忽略還是它是解決方案的一部分(或問題的一部分)?

更新2:根級別log4j.properties文件設置不正確。現在它看起來是這樣的:

log4j.rootLogger=DEBUG, R 
log4j.logger.org.apache.axiom=WARN 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

但這顯然是錯誤的,因爲這樣的代碼返回「日誌級別爲空」:

System.out.println("Log level is " + logger.getLevel()); 

現在我使用

設置代碼中的日誌級別
Logger logger = Logger.getLogger("org.apache.axiom"); 
logger.setLevel(Level.WARN); 
+0

我還是有這個問題 - 我添加了一個log4j.properties文件到控制檯應用程序的根目錄但既不增加 log4j.rootLogger = WARN,R 或 log4j.logger.org.apache.axiom = WARN 似乎可以做任何事情 - 我得到和以前一樣的錯誤。 – 2009-11-13 19:29:18

回答

52

您正在使用哪個應用服務器?每個人都將其日誌配置放在不同的地方,儘管現在大多數人使用Commons-Logging作爲Log4J或java.util.logging的包裝。

以Tomcat爲例,this document解釋了使用任一選項配置日誌記錄的選項。無論哪種情況,您都需要查找或創建一個配置文件,以定義每個軟件包的日誌級別,並且每個日誌記錄系統將輸出日誌信息(通常是控制檯,文件或db)。

在log4j的情況下,這將是log4j.properties文件,如果你按照你的文件上面的鏈接方向將開始出去找這樣的:

log4j.rootLogger=DEBUG, R 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=${catalina.home}/logs/tomcat.log 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

最簡單的是改變線路:

log4j.rootLogger=DEBUG, R 

喜歡的東西:

log4j.rootLogger=WARN, R 

但是,如果你仍然想你的O從你自己的類輸出WN DEBUG級別添加一條線,說:

log4j.category.com.mypackage=DEBUG 

讀了一下關於Log4JCommons-Logging將幫助你瞭解這一切。

+0

現在我只是試圖運行一些代碼作爲控制檯應用程序。我會看看我是否可以找出log4j.properties文件應該放在哪裏。謝謝。 – 2009-11-12 23:34:51

+1

+1良好的信息,謝謝 – 2010-09-23 17:31:57

+3

類別在log4j中被logger棄用 – janwen 2012-04-07 09:17:01

7

我今天遇到了同樣的問題,Ryan。

在我SRC(或根)目錄,我log4j.properties文件現在具有以下此外

# https://issues.apache.org/jira/browse/AXIS2-4363 
log4j.category.org.apache.axiom=WARN 

感謝擡起頭爲如何做到這一點,本傑明。

3

這工作我:

log4j.logger.org.hibernate.type=trace 

也可以嘗試:

log4j.category.org.hibernate.type=trace 
0

設置系統屬性log4j.debug =真。然後你可以確定你的配置在哪裏運行。

2

我剛剛遇到問題,無法弄清楚什麼是錯誤的,即使閱讀了上述所有內容和所有內容。我所做的是

  1. 設定根記錄級別爲WARN
  2. 設置包的日誌級別進行調試

每個日誌實現有它的通過性還是通過代碼設置它的自己的路(批號可用的幫助)

無論以上所有我不會在我的控制檯或我的日誌文件中獲取日誌。我忽略了是低於...


enter image description here


所有我與前面耍弄這樣做是隻控制生產日誌(在根/包/班等),在上面的圖像中的紅線左側。但是我並沒有改變上圖中紅線右側顯示/消耗日誌的方式。處理程序(消費)通常在INFO默認,因此您的寶貴調試聲明不會通過。消費/顯示是通過設置處理程序(ConsoleHandler/FileHandler等)的日誌級別來控制的。因此,我繼續設置所有處理程序的日誌級別,使其最好,並且一切正常。

這一點在任何地方都沒有以確切的方式表示清楚。

我希望有人撓頭,想爲什麼這些屬性不工作會發現這有點幫助。