基于Java中log4j上的级别的日志记录

基于Java中log4j上的级别的日志记录,java,logging,log4j,Java,Logging,Log4j,下面是log4j属性和Java代码。所有日志仅在调试中记录。我甚至尝试过增加阈值,但还没有成功。我需要根据日志级别将日志语句记录在单独的文件中 所有日志只记录在调试日志文件中,如果我删除调试日志,则它将记录在信息日志文件中 给出阈值选项也不起作用 log4j.rootLogger = OFF #define the console appender log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender # now d

下面是log4j属性和Java代码。所有日志仅在调试中记录。我甚至尝试过增加阈值,但还没有成功。我需要根据日志级别将日志语句记录在单独的文件中

所有日志只记录在调试日志文件中,如果我删除调试日志,则它将记录在信息日志文件中

给出阈值选项也不起作用

log4j.rootLogger = OFF

#define the console appender
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender
# now define the layout for the appender
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# now define the rollingFIle appender
log4j.category.com=error, myErrorappender
log4j.additivity.com=false
log4j.appender.myErrorappender=org.apache.log4j.RollingFileAppender
log4j.appender.myErrorappender.File=/Users/uthaman/Documents/workspace/Logging/myErrorlog.log
log4j.appender.myErrorappender.MaxFileSize=2MB
log4j.appender.myErrorappender.MaxBackupIndex=2
log4j.appender.myErrorappender.layout = org.apache.log4j.PatternLayout
log4j.appender.myErrorappender.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c (%F:%L) - %m%n


log4j.category.com=info,myInfoappender
log4j.additivity.com=false
log4j.appender.myInfoappender=org.apache.log4j.RollingFileAppender
log4j.appender.myInfoappender.File=/Users/user/Documents/workspace/Logging/myInfolog.log
log4j.appender.myInfoappender.MaxFileSize=2MB
log4j.appender.myInfoappender.MaxBackupIndex=2
log4j.appender.myInfoappender.layout = org.apache.log4j.PatternLayout
log4j.appender.myInfoappender.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c (%F:%L) - %m%n

log4j.category.com=debug,myDebugappender
log4j.additivity.com=false
log4j.appender.myDebugappender=org.apache.log4j.RollingFileAppender
log4j.appender.myDebugappender.File=/Users/user/Documents/workspace/Logging/myDebuglog.log
log4j.appender.myDebugappender.MaxFileSize=2MB
log4j.appender.myDebugappender.MaxBackupIndex=2
log4j.appender.myDebugappender.layout = org.apache.log4j.PatternLayout
log4j.appender.myDebugappender.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c (%F:%L) - %m%n
这是记录日志语句的java代码:

public class Logging {

    private static Logger logger = Logger.getLogger(Logging.class);

    public static void main(String[] args) {
        logger.error("This is error");
        logger.info("This is info");
        logger.debug("This is debug");
    }

}

我更喜欢使用
log4j.xml
配置,而不是
log4j.properties
。以下配置(基本配置)可根据需要工作

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
    <appender name="fileAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="log.info" />
        <param name="datePattern" value="'.'yyyy-MM-dd" />
        <param name="append" value="true" />
        <param name="threshold" value="info"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C{6} - %m%n" />
        </layout>
    </appender>

    <appender name="fileAppenderDebug" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="log.debug" />
        <param name="datePattern" value="'.'yyyy-MM-dd" />
        <param name="append" value="true" />
        <param name="threshold" value="debug"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C{6} - %m%n" />
        </layout>
    </appender>

    <appender name="fileAppenderError" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="log.error" />
        <param name="datePattern" value="'.'yyyy-MM-dd" />
        <param name="append" value="true" />
        <param name="threshold" value="error"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C{6} - %m%n" />
        </layout>
    </appender>

    <root>
        <priority value="debug" />
        <appender-ref ref="fileAppender" />
        <appender-ref ref="fileAppenderDebug" />
        <appender-ref ref="fileAppenderError" />
    </root>
</log4j:configuration>

我更喜欢使用
log4j.xml
配置,而不是
log4j.properties
。以下配置(基本配置)可根据需要工作

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
    <appender name="fileAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="log.info" />
        <param name="datePattern" value="'.'yyyy-MM-dd" />
        <param name="append" value="true" />
        <param name="threshold" value="info"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C{6} - %m%n" />
        </layout>
    </appender>

    <appender name="fileAppenderDebug" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="log.debug" />
        <param name="datePattern" value="'.'yyyy-MM-dd" />
        <param name="append" value="true" />
        <param name="threshold" value="debug"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C{6} - %m%n" />
        </layout>
    </appender>

    <appender name="fileAppenderError" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="log.error" />
        <param name="datePattern" value="'.'yyyy-MM-dd" />
        <param name="append" value="true" />
        <param name="threshold" value="error"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C{6} - %m%n" />
        </layout>
    </appender>

    <root>
        <priority value="debug" />
        <appender-ref ref="fileAppender" />
        <appender-ref ref="fileAppenderDebug" />
        <appender-ref ref="fileAppenderError" />
    </root>
</log4j:configuration>

问题:

    log4j.category.com=debug,myDebugappender,myInfoappender,myErrorappender
    log4j.additivity.com=false
    log4j.appender.myDebugappender.Threshold=DEBUG
    log4j.appender.myInfoappender.Threshold=INFO
    log4j.appender.myErrorappender.Threshold=ERROR
您已经在log4j配置中定义了重复密钥:

    log4j.category.com=error, myErrorappender
    log4j.additivity.com=false

    log4j.category.com=info,myInfoappender
    log4j.additivity.com=false

    log4j.category.com=debug,myDebugappender
    log4j.additivity.com=false
  • Log4j使用最后一个调试附件-->“所有日志仅记录在调试日志文件中”
  • 删除调试追加器时,信息追加器将是最后一个--->“如果删除调试日志,则它将被记录在信息日志文件中。”
解决方案:

    log4j.category.com=debug,myDebugappender,myInfoappender,myErrorappender
    log4j.additivity.com=false
    log4j.appender.myDebugappender.Threshold=DEBUG
    log4j.appender.myInfoappender.Threshold=INFO
    log4j.appender.myErrorappender.Threshold=ERROR
如果必须按精确级别匹配筛选事件:

     log4j.appender.myDebugappender.filter=org.apache.log4j.varia.LevelMatchFilter
     log4j.appender.myDebugappender.filter.levelToMatch=DEBUG
     ...

问题:

    log4j.category.com=debug,myDebugappender,myInfoappender,myErrorappender
    log4j.additivity.com=false
    log4j.appender.myDebugappender.Threshold=DEBUG
    log4j.appender.myInfoappender.Threshold=INFO
    log4j.appender.myErrorappender.Threshold=ERROR
您已经在log4j配置中定义了重复密钥:

    log4j.category.com=error, myErrorappender
    log4j.additivity.com=false

    log4j.category.com=info,myInfoappender
    log4j.additivity.com=false

    log4j.category.com=debug,myDebugappender
    log4j.additivity.com=false
  • Log4j使用最后一个调试附件-->“所有日志仅记录在调试日志文件中”
  • 删除调试追加器时,信息追加器将是最后一个--->“如果删除调试日志,则它将被记录在信息日志文件中。”
解决方案:

    log4j.category.com=debug,myDebugappender,myInfoappender,myErrorappender
    log4j.additivity.com=false
    log4j.appender.myDebugappender.Threshold=DEBUG
    log4j.appender.myInfoappender.Threshold=INFO
    log4j.appender.myErrorappender.Threshold=ERROR
如果必须按精确级别匹配筛选事件:

     log4j.appender.myDebugappender.filter=org.apache.log4j.varia.LevelMatchFilter
     log4j.appender.myDebugappender.filter.levelToMatch=DEBUG
     ...

您可以尝试在配置文件中使用
filter
,指定要写入
附录的
特定级别。请附上样品代码

    <appender name="DEBUG" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" value="[%t] %-5p %c - %m%n" />
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                    <param name="levelMin" value="DEBUG" />
                    <param name="levelMax" value="DEBUG" />
            </filter>
    </appender>

您可以尝试在配置文件中使用
过滤器
,指定要写入
附录的
特定级别
。请附上样品代码

    <appender name="DEBUG" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" value="[%t] %-5p %c - %m%n" />
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                    <param name="levelMin" value="DEBUG" />
                    <param name="levelMax" value="DEBUG" />
            </filter>
    </appender>


log4j.rootLogger=OFF
-它声明
关闭级别具有最高的可能级别,并打算关闭日志记录。
它不应该实际记录。
log4j.rootLogger=OFF
-它声明
关闭级别具有最高的可能级别,并打算关闭日志记录。
它不应该记录日志事实上,在更改此项后,我在所有3个日志中都看到了日志,但问题是,调试文件也在获取调试、信息和错误日志。信息文件正在获取信息和错误日志。如何限制。有没有办法严格限制只将定义的日志级别记录到日志文件中?“如果必须按精确级别匹配筛选事件,则可以将LevelMatchFilter附加到任何附加程序,以按精确级别匹配筛选日志事件。”更改此选项后,我在所有3个日志中都看到了日志,但问题是,调试文件正在获取调试、信息和错误日志。信息文件正在获取信息和错误日志。如何限制。有没有办法严格限制只将定义的日志级别记录到日志文件中?“如果必须按精确级别匹配筛选事件,则可以将LevelMatchFilter附加到任何附加器,以按精确级别匹配筛选日志事件。”THRESHOLD参数不只记录指定的日志级别,它还记录低于该级别的日志,是否有方法严格限制要记录的日志级别。THRESHOLD参数不仅记录指定的日志级别,还记录低于该级别的日志。是否有方法严格限制要记录的日志级别。