Grails Log4j DSL配置中的Log4j过滤器
有没有办法在配置中指定log4j过滤器?我需要在grailslog4j配置中定义类似的内容:Grails Log4j DSL配置中的Log4j过滤器,grails,log4j,Grails,Log4j,有没有办法在配置中指定log4j过滤器?我需要在grailslog4j配置中定义类似的内容: <filter class="org.apache.log4j.filter.ExpressionFilter"> <param name="expression" value="EXCEPTION ~= com.company.BackendNotAvailableException" /> <param name="acceptOnMatch" valu
<filter class="org.apache.log4j.filter.ExpressionFilter">
<param name="expression" value="EXCEPTION ~= com.company.BackendNotAvailableException" />
<param name="acceptOnMatch" value="false"/>
</filter>
我使用Grails1.3.7。我通过向Bootstrap.groovy添加一个简短的init代码来解决这个问题
Logger.rootLogger.allAppenders.each { appender ->
ExpressionFilter filter = new ExpressionFilter()
filter.expression = "EXCEPTION ~= org.springframework.security.authentication.*"
filter.acceptOnMatch = false
filter.activateOptions()
appender.addFilter(filter)
}
谢谢你的指点。我在没有ExpressionFilter的情况下也做了同样的事情,这样我就不必加载额外的Log4j Extras模块,只需使用以下快捷方式:
在我的例子中,我想在启动时过滤Hibernate生成的一些虚假消息,所以我将这些代码放在Config.groovy中,因为引导执行得太晚了。只是一个更新,偶然发现了这个问题并找到了另一个解决方案(希望以此作为参考): 在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
...
)
}
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
...
)
}