Java 在log4j配置中覆盖子类别的级别
我的应用程序中有一些审计。每个审核事件都有自己的log4j类别,其名称以相同的字符串作为前缀 例如: 一般审计类别名称:com.company.audit web登录类别名称:com.company.audit.web.loginJava 在log4j配置中覆盖子类别的级别,java,log4j,auditing,Java,Log4j,Auditing,我的应用程序中有一些审计。每个审核事件都有自己的log4j类别,其名称以相同的字符串作为前缀 例如: 一般审计类别名称:com.company.audit web登录类别名称:com.company.audit.web.login 创建一些东西:com.company.audit.api.create 等等 默认情况下,应记录某些类别,但有些类别不应=> <category name="com.compamy.audit" additivity="true"> <pri
创建一些东西: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的配置:
<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
或更高级别的消息。因此,第二类的所有消息都会被记录下来,这是您要求的
您真正想要的是选择是否显示第二个类别。我可以想出两种方法来做到这一点:
com.company.audit
中的所有消息将在INFO
级别记录,而com.company.audit.web.login
中的所有消息将在DEBUG
级别记录。在配置中,您只需设置主类别的级别:
:显示所有消息调试
:不显示“可选”消息(即子类别的消息)INFO
com.company.audit.web.login
置于级别OFF
。当您想要激活它时,只需注释该行(它将从主类别继承配置)我更喜欢第二个选项,因为您可以继续使用消息重力级别(它最初的含义)。第二个类别记录在什么级别?它是在INFO中记录的还是在DEBUG中记录的?问题可能在于你的appender配置。我后来意识到它记录了两次…我认为它应该完全按照你写的那样工作。但log4j似乎与两个类别都匹配a它对这两个类别都进行了日志记录=如果com.company.audit是信息,它会记录一次,然后还会记录为com.company.audit.web.login(如果未关闭)