0

我的申请中有一些审核。每个审计事件都有自己的 log4j 类别,其名称以相同的字符串为前缀。

EG:一般审计类别名称:com.company.audit

网络登录类别名称:com.company.audit.web.login
创建一些东西:com.company.audit.api.create 等。

默认情况下应该记录一些类别,但有些不是=>

<category name="com.compamy.audit" additivity="true">
    <priority value="INFO"/>
</category>

<category name="com.company.audit.web.login" additivity="true">
  <priority value="DEBUG">
</category>

默认情况下,不应记录 INFO 第二类。至少我是这么想的,但它不起作用。任何帮助如何覆盖“子类别”上的日志记录级别。

注意:我不太可能更改整个命名方案

添加:

这是附加程序的配置:

<appender class="org.apache.log4j.RollingFileAppender" name="Company_AUDIT">

<param name="File" value="${jboss.server.log.dir}/company_audit.log"/>

<param value="10000KB" name="MaxFileSize"/>

<param value="10" name="MaxBackupIndex"/>

<layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="foo"/>
</layout>

</appender>
4

1 回答 1

1

您的配置意味着:对于 category com.company.audit,记录所有级别INFO或更高级别的消息。对于com.company.audit.web.login,记录所有级别DEBUG或更高级别的消息。所以第二类的所有消息都被记录下来,这就是你所要求的。

您真正想要的是选择是否显示第二个类别。我可以想到两种方法来做到这一点:

  1. 在您的代码中,使用所有消息都将记录在 level 中的约定com.company.auditINFO并且所有消息com.company.audit.web.login都将记录在 levelDEBUG中。在你的配置中,你只需要设置主类的级别:

    • DEBUG: 显示所有消息
    • INFO:不显示“可选”消息(即子类别的消息)
  2. 在配置中,当您想要禁用其消息时,将其设置com.company.audit.web.login为水平。OFF当您想激活它时,只需注释该行(它将继承主类别的配置)。

我更喜欢第二个选项,因为您可以继续使用级别来表示消息重力(它最初的用途)。

于 2009-01-30T10:11:29.427 回答