【问题标题】:Tomcat: Filter log4j by logger nameTomcat:按记录器名称过滤 log4j
【发布时间】:2012-07-30 13:19:35
【问题描述】:

我正在使用一个非常详细地使用 log4j 的外部包。我查看了代码并找到了预期的log4j 行:

private Logger log = Logger.getLogger("SomeLoggerName");
...
log.info("Trivial message");
log.info("More trivial data");

由于无法更改代码,我尝试更改log4j.xml

<category name="SomeLoggerName">
  <level value="${log4j_level:-WARN}"/>
  <appender-ref ref="FileLogger"/>
</category>

我猜category name 属性等同于记录器名称。这是真的吗?如果没有,如何按记录器名称过滤?

【问题讨论】:

    标签: java tomcat logging log4j verbosity


    【解决方案1】:

    其实你可以使用&lt;logger&gt;作为元素名,例如

    <logger name="SomeLoggerName">
      <level value="${log4j_level:-WARN}"/>
      <appender-ref ref="FileLogger"/>
    </logger>
    

    我认为category 是为了向后兼容,它的使用已被弃用。

    【讨论】:

      【解决方案2】:

      如果您只是想降低冗长,我会调高优先级:

      <category name="SomeLoggerName">
        <level value="WARN"/>
      </category>
      

      否则,您可能需要将filter 添加到现有的附加程序中。首先,实现一个 log4j 过滤器。在您的情况下,确定日志事件是否来自不需要的类将是一个简单的比较。这样的事情会起作用:

      public class MyAuditFilter extends Filter{
      
          @Override
          public int decide(LoggingEvent event) {
              if(event.getClass.getCanonicalName().equalsIgnoreCase("class.you.don't.want"))
                  return Filter.DENY;
              else
                  return Filter.ACCPET;
          }
      }
      

      实现过滤器后,只需将其添加到 log4j appender 中,如下所示:

      <appender name="myAppender" class="my.appender.class">
        .
        .
        <filter class="my.namespace.MyAuditFilter">
          <param name="AcceptOnMatch" value="True"/>
        </filter>
        .
        .
      </appender>
      

      如果您需要更多控制,过滤器可以让您对日志记录进行极其精细的控制。

      【讨论】:

        【解决方案3】:

        你是对的,记录器 == 类别。你的配置有问题吗?一般来说,它看起来不错,应该可以工作。

        【讨论】:

        • 谢谢!我还没有尝试过,但我想要一个。在部署之前确保我是正确的,并且 b。在线发布经过验证的答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 1970-01-01
        • 2012-02-01
        • 1970-01-01
        • 2017-04-25
        相关资源
        最近更新 更多