覆盖 log4j 配置中子类别的级别

发布于 2024-07-13 07:43:51 字数 1053 浏览 6 评论 0原文

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

例如: 一般审核类别名称:com.company.audit

Web 登录类别名称: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>

默认情况下,不应记录第二类信息。 至少我是这么想的,但行不通。 任何帮助如何覆盖“子类别”的日志记录级别。

注意:我没有太多可能更改整个命名方案

添加:

这里是附加程序的配置:

<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>

There is some auditing in my application. Every audit event has it's own log4j category with name that is prefixed by same string.

EG:
general auditing category name: com.company.audit

web login category name: com.company.audit.web.login
create something: com.company.audit.api.create
etc..

some of the categories should be logged by default, but some not =>

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

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

As default is INFO second category shouldn't be logged. At least I thought it but it doesn't work. Any help how to override logging level on 'sub-category'.

NOTE: I don't have much possibility to change a naming scheme as a whole

ADDED:

here is configuration of appender:

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深居我梦 2024-07-20 07:43:51

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

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

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

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

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

Your configuration means: for category com.company.audit, log all messages of level INFO or higher. For com.company.audit.web.login, log all messages of level DEBUG or higher. So all the messages of the second category are logged, which is what you asked for.

What you really want is to select whether the second category is displayed or not. I can think of two approaches to do that:

  1. in your code, use the convention that all messages in com.company.audit will be logged at level INFO, and all messages in com.company.audit.web.login will be logged at level DEBUG. In your configuration, you only need to set the level of the main category:

    • DEBUG: display all messages
    • INFO: don't display "optional" messages (i.e. those of the subcategory)
  2. In the configuration, put com.company.audit.web.login to level OFF when you want to disable its messages. When you want to activate it, just comment the line (it will inherit the configuration from the main category).

I prefer the second option, because you can keep using the level for message gravity (what it is originally meant for).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文