gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:12:33 24 4
gpt4 key购买 nike

我的申请中有一些审核。每个审核事件都有自己的 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的配置:

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

最佳答案

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

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

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

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

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

关于java - 覆盖 log4j 配置中子类别的级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/491729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com