2014-11-15 42 views
1

在Grails中,日誌記錄是在Config.groovy文件中設置的。這些屬性可以通過外部屬性文件覆蓋(由grails.config.locations定義)。在Grails中更改appender的閾值

我的問題是:我如何通過屬性文件更改特定appender的閾值?這是什麼屬性名稱?

我試過的變化:

log4j.appenders.rollingApplicationAppender.threshold=org.apache.log4j.Level.DEBUG 

但是一直沒有成功。

回答

1

您似乎對log4j和日誌記錄有一個根本性的誤解。你要做的事情不能完成,我會解釋爲什麼。

日誌記錄基於兩個概念。 LoggersAppenders。記錄器,接收消息,檢查這些消息,並根據消息的配置確定是否應該將消息發送給appender。 Thresholdlogger的財產。因此,當一條消息到達時,它首先被logger評估,然後發送到appenderappender反過來了解如何將消息寫入適當的輸出並且不理解threshold

希望這有助於您進一步瞭解日誌記錄的工作原理,並引導您完成您期望的任務。

更新

正如評論appenders指出,確實有也適用於自己的能力threshold消息已被鑑定通過logger爲有效之後。這允許他們丟棄消息的能力(通常用於放棄生產中的TRACE以用於控制檯輸出)。考慮到這一點,你在問題中的例子就是這麼做的。請將threshold設置爲appender,但由於您的logger首先正在過濾郵件,因此您沒有看到任何輸出到appender

+2

這就是我的想法,但幾乎每個'Appender'的基類都是'org.apache.log4j.AppenderSkeleton',它有一個方法'public void setThreshold(Priority threshold)'('Level' extends 'Priority'),由於某種原因,它不在界面中。 –

+0

啊,優秀的抓住伯特。它確實顯示appender有一個閾值設置本身的額外級別的過濾。例如。一旦消息已經超過記錄器閾值,appender就有機會在追加之前評估該級別。我會更新答案來表明這一點。 –

相關問題