[英]Log4j filter in Grails Log4j DSL configuration
有沒有辦法在Grails log4j DSL配置中指定log4j過濾器? 我需要在Grails log4j配置中定義以下內容:
<filter class="org.apache.log4j.filter.ExpressionFilter">
<param name="expression" value="EXCEPTION ~= com.company.BackendNotAvailableException" />
<param name="acceptOnMatch" value="false"/>
</filter>
我使用Grails 1.3.7。
我已通過在Bootstrap.groovy中添加一個簡短的初始化代碼來解決此問題。
Logger.rootLogger.allAppenders.each { appender ->
ExpressionFilter filter = new ExpressionFilter()
filter.expression = "EXCEPTION ~= org.springframework.security.authentication.*"
filter.acceptOnMatch = false
filter.activateOptions()
appender.addFilter(filter)
}
只是一個更新,偶然發現了這個問題並找到了另一個解決方案(希望將此作為參考):
在Config.groovy中,
Filter expFilter = new org.apache.log4j.filter.ExpressionFilter()
expFilter.setExpression('EXCEPTION ~= com.company.BackendNotAvailableException')
expFilter.setAcceptOnMatch(false)
log4j = {
appenders {
appender new DailyRollingFileAppender(
...
// This is where we set the filter:
headFilter: expFilter
...
)
}
謝謝您的指導。 我沒有ExpressionFilter也做了同樣的事情,這樣我就不必使用快速的Groovy閉包強制來加載附加的Log4j Extras模塊:
import org.apache.log4j.Logger
import org.apache.log4j.spi.Filter
Logger.rootLogger.allAppenders*.addFilter({ event ->
event.loggerName == "some.logger.name" && event.message =~ /text to ignore/
? Filter.DENY : Filter.NEUTRAL
} as Filter)
在我的情況下,我想過濾啟動時Hibernate生成的一些虛假消息,因此將代碼放在Config.groovy中,因為Bootstrap執行得太遲了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.