简体   繁体   English

需要log4j致命级别日志记录

[英]log4j fatal level logging required

This is my log4j.xml. 这是我的log4j.xml。 i want only FATAL log from package com.xyz.rest should print to /LOGS/Acb/d.log file. 我只希望来自软件包com.xyz.rest FATAL日志应该打印到/LOGS/Acb/d.log文件。

But i can see Debug level logs as well in file. 但是我可以在文件中看到Debug级别的日志。 Why log4j is printing Debug level logs from com.xyz.rest package. 为什么log4j从com.xyz.rest软件包中打印Debug级别的日志。

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

<appender name="Def" class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="/LOGS/Acb/d.log"/>
        <param name="MaxFileSize" value="10000KB"/>
        <param name="MaxBackupIndex" value="10"/>

        <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t] %-5p [%c{1}] %m%n"/>
        </layout>
</appender>
<logger name="com.xyz.rest">
        <logger value="fatal"/>
        <appender-ref ref="Def"/>
</logger>

</log4j:configuration>

Its because with the following code you are adding another log level to your com.xyz.rest package which is not removing the debug level which your package inherits from parents: 这是因为使用以下代码新的日志level 添加com.xyz.rest包中,而这并没有删除该包从父级继承的debug级别:

<logger name="com.xyz.rest">
        <logger value="fatal"/>
        <appender-ref ref="Def"/>
</logger>

What you need is to set the additivity to false so that rather than adding another log level, you will set the log level: 您需要将可additivity设置为false,以便您无需设置其他日志级别,而将日志级别设置为:

<logger name="com.xyz.rest" additivity="false">
        <logger value="fatal"/>
        <appender-ref ref="Def"/>
</logger>

More information can be found here . 可以在此处找到更多信息。

Not sure but it might also be necessary to enclose the <logger></logger> tags in <loggers></loggers> tag 不确定,但是可能需要将<logger></logger>标记括在<loggers></loggers>标记中

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM