Java Tomcat:按记录器名称筛选log4j

Java Tomcat:按记录器名称筛选log4j,java,tomcat,logging,log4j,verbosity,Java,Tomcat,Logging,Log4j,Verbosity,我正在使用一个非常详细地使用log4j的外部包。我查看了代码,找到了预期的log4j行: private Logger log=Logger.getLogger(“SomeLoggerName”); ... log.info(“普通消息”); log.info(“更琐碎的数据”); 因为我无法更改代码,所以我尝试更改log4j.xml: 我猜category name属性等同于记录器名称。这是真的吗?如果没有,如何按记录器名称筛选?你说得对,记录器==类别。您的配置有问题吗?通常它看起来不

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

private Logger log=Logger.getLogger(“SomeLoggerName”);
...
log.info(“普通消息”);
log.info(“更琐碎的数据”);
因为我无法更改代码,所以我尝试更改
log4j.xml



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

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

实际上,您可以使用
作为元素名称,例如

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


我认为
category
是为了向后兼容而存在的,它的使用是不推荐的。

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

<category name="SomeLoggerName">
  <level value="WARN"/>
</category>
实现过滤器后,只需将其添加到log4j appender中,如下所示:

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

.
.
.
.

如果您需要更多的控制,该过滤器将能够为您提供对日志的极细粒度控制。

谢谢!我还没试过,但我想试一下。在部署之前确保我是正确的,b。在网上发布一个经过验证的答案。
<appender name="myAppender" class="my.appender.class">
  .
  .
  <filter class="my.namespace.MyAuditFilter">
    <param name="AcceptOnMatch" value="True"/>
  </filter>
  .
  .
</appender>