【问题标题】:Log4j filter in Grails Log4j DSL configurationGrails Log4j DSL 配置中的 Log4j 过滤器
【发布时间】:2012-02-29 16:53:25
【问题描述】:

有没有办法在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。

【问题讨论】:

    标签: grails log4j


    【解决方案1】:

    我通过向 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)
    }
    

    【讨论】:

      【解决方案2】:

      刚刚更新,偶然发现了这个问题,找到了另一个解决方案(希望以此作为参考):

      在 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
                  ...
              )
      }
      

      【讨论】:

        【解决方案3】:

        感谢您的指点。我在没有 ExpressionFilter 的情况下做了同样的事情,这样我就不必使用快速 Groovy closure coercion 加载额外的 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 执行得太晚了。

        【讨论】:

          猜你喜欢
          • 2017-09-24
          • 2010-12-18
          • 1970-01-01
          • 1970-01-01
          • 2016-12-24
          • 1970-01-01
          • 2017-08-25
          • 1970-01-01
          • 2023-03-25
          相关资源
          最近更新 更多