当前位置: 首页 > 知识库问答 >
问题:

不同的日志到不同的文件

卓新知
2023-03-14

我的目标是:

实现所有自定义,内置记录器从同一个包到不同的文件。

  1. 信息-信息日志文件

我尝试的是:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout
                pattern="%d{HH:mm:ss.SSS} [%t] %-5level %c{36} - %msg%n" />
        </Console>
        <RollingFile name="RollingDebugFile"
            fileName="logs/application-debug.log"
            filePattern="logs/application-debug%d{yyyy-MM-dd-HH-mm}.log"
            append="true">
            <Filters>
                <ThresholdFilter level="DEBUG" />
                <ThresholdFilter level="INFO" onMatch="DENY"
                    onMismatch="NEUTRAL" />
            </Filters>
            <PatternLayout>
                <Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %c{36} %l: %msg%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"
                    modulate="true" />
            </Policies>
        </RollingFile>
        <RollingFile name="RollingInfoFile"
            fileName="logs/application-info.log"
            filePattern="logs/application-info%d{yyyy-MM-dd-HH-mm}.log"
            append="true">
            <Filters>
                <ThresholdFilter level="INFO" />
                <ThresholdFilter level="WARN" onMatch="DENY"
                    onMismatch="NEUTRAL" />
            </Filters>
            <PatternLayout>
                <Pattern>%d{HH:mm:ss.SSS} [%t] %-5level %c{36} %l: %msg%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"
                    modulate="true" />
            </Policies>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Logger name="testlog4j2" additivity="false">
            <AppenderRef ref="RollingDebugFile" level="debug" />
            <AppenderRef ref="Console" />
        </Logger>
        <Logger name="testlog4j2" additivity="false">
            <AppenderRef ref="RollingInfoFile" level="info" />
            <AppenderRef ref="Console" />
        </Logger>
        <Root level="ALL">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

问题是:

记录器名称相同。因此,最新的记录器只能工作。在这种情况下,Info可以工作,但也不能调试。

我的疑问是:

我引用了这么多帖子。我认为下面的方法是有效的。

  1. 按此处所述,将每一个作为自定义记录器。但我确信这是否正确的解决方案

共有1个答案

丁长卿
2023-03-14

在深入研究之后,我发现我必须使用下面的方法。否则将覆盖记录器

<Logger name="testlog4j2" additivity="false">
        <AppenderRef ref="RollingDebugFile" level="debug" />
        <AppenderRef ref="RollingInfoFile" level="info" />
        <AppenderRef ref="RollingWarnFile" level="warn" />
        <AppenderRef ref="Console" />
    </Logger>
 类似资料:
  • 如何编写一个简单的log4j2.xml文件,将不同级别的日志放入不同的文件中? 例如,我们有错误日志,任何信息日志,我需要将所有错误日志消息推入一个日志文件,所有信息日志消息推入另一个文件。 我怎么做?

  • 对于一些人来说,这可能是一个非常简单的问题,但就我个人而言,Log4j配置非常困难,学习执行脑部手术可能没有那么困难。 我正试图让多个日志记录者登录到不同的文件。这是我的log4j中的内容。属性文件: 这是我的(非常简单的)Java应用程序用于测试配置: 我有两个问题: 有一个问题,我总是在

  • 我的简单问题是:如果我有两个类似logger的语句。info()和记录器。error()在Java中(使用log4j),我希望将这两行的结果打印在两个单独的文件中。也就是说,记录器。信息(…)应该打印到一个文件,比如myLog。信息和记录器。错误(…)应该打印到myLog。错误文件。我正在使用滚动文件追加器执行此任务。另外,我只需要一个记录器对象来完成任务。有人可能会建议两个或多个不同的记录器,每

  • 下面,我有一个全局应用的日志回溯配置。 我想全局使日志记录级别错误,除了一个类。对于一个特定的类,我想使日志记录级别 INFO。我该怎么做?

  • 本文向大家介绍利用Log4j将不同Package的日志输出到不同文件的方法,包括了利用Log4j将不同Package的日志输出到不同文件的方法的使用技巧和注意事项,需要的朋友参考一下 前言 随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就存在以下这些日志: 接收外界消息的日志、对外发送消息的日志; 后台常驻线程的处理日志

  • 问题内容: 我正在使用log4j登录我的应用程序。我正在尝试在不同文件中使用不同级别的日志,但是出了点问题。对于解决此问题的任何帮助,我们将不胜感激。 问题答案: log4j附加程序的标准行为是,它们以其阈值级别 或更高 的阈值记录所有消息,即具有阈值INFO的附加器将记录INFO,WARN,ERROR和FATAL消息,但不记录DEBUG。如果你想记录 只有 INFO信息,但不会发出警告及以上,然