簡體   English   中英

Grails Log4j DSL配置中的Log4j過濾器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM