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

同一日志文件中的两个模式在log4j2中不起作用

申屠洛华
2023-03-14
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
    <Properties>
        <Property name="log-path">/documents/log</Property>
    </Properties>
    <Appenders>
        <RollingFile name="RollingFile" fileName="${log-path}/myexample.log"
            filePattern="${log-path}/$${date:yyyy-MM}/myexample-%d{yyyy-MM-dd}-%i.log"
            immediateFlush="true">
            <PatternLayout>
                <pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %X{packetRefId} - %msg%n</pattern>
                <!-- %d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n -->
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="100 KB" />
            </Policies>
            <DefaultRolloverStrategy max="4" />
        </RollingFile>
        <RollingFile name="RollingFileError" fileName="${log-path}/myexample.log"
            filePattern="${log-path}/$${date:yyyy-MM}/myexample-%d{yyyy-MM-dd}-%i.log"
            immediateFlush="true">
            <param name="threshold" value="error" />
            <PatternLayout>
                <pattern>MYDOMAINDOTCOM_SUPPORT_NEEDED %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %X{packetRefId} - %msg%n</pattern>
                <!-- %d{dd/MMM/yyyy HH:mm:ss,SSS}- %c{1}: %m%n -->
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="100 KB" />
            </Policies>
            <DefaultRolloverStrategy max="4" />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="org.springframework.beans.factory" level="info" additivity="false">
          <AppenderRef ref="Console"/>
        </Logger>
        <Logger name="root" level="debug" additivity="false">
            <appender-ref ref="RollingFile" level="debug" />
            <appender-ref ref="RollingFileError" level="error" />
        </Logger>
        <Root level="debug" additivity="false">
            <AppenderRef ref="RollingFile" />
        </Root>
    </Loggers>
</Configuration>

共有1个答案

劳昊明
2023-03-14

您不应该配置两个附加器来写入同一个文件。拥有两个滚动文件附加器,它们都使用相同的文件并且滚动到相同的文件模式,这是永远不会正确工作的。

此外,您的配置将导致所有错误消息被记录两次;一次使用RollingFile附加器(由于其调试级别),一次使用RollingFileError附加器(由于其错误级别)。

相反,您应该有一个单独的滚动文件附加器,并使用PatternSelector来决定使用哪种模式。有关模式选择器的文档,请参见http://logging.apache.org/log4j/2.x/manual/layouts.html#pattern_selectors。

 类似资料:
  • 我有一个log4j2.xml文件,我配置如下: 现在,我想自定义将数据记录到commons中。日志和分析。日志文件。 java中的示例: 我想在需要时自定义将日志写入每个文件,例如: 问题:我怎么做?请帮助我解决log4j2中的所有问题。xml文件和Java代码示例。 谢谢!

  • 现在我使用这样的结构:Appender: 记录器: 但它不适用于MDC密钥。如何使用xml中的MDC键配置RollingFileAppender?

  • 如何编写一个简单的log4j2.xml文件,将不同级别的日志放入不同的文件中? 例如,我们有错误日志,任何信息日志,我需要将所有错误日志消息推入一个日志文件,所有信息日志消息推入另一个文件。 我怎么做?

  • 问题内容: 现在,我正在使用如下结构:Appender: 记录器: 但是它不适用于MDC密钥。如何在xml中使用MDC密钥配置RollingFileAppender? 问题答案: 看一下RoutingAppender。也许这可以帮助您入门:

  • 我正在尝试以编程方式配置log4j2v2。11.1作为DefaultRolloverStrategy的一部分,使用新的删除操作删除旧文件。 正如您可以从下面的代码中看到的,我已将系统设置为每天创建日志文件,并在文件大小达到1MB时滚动该文件。 我尝试使用两个条件将删除操作添加到DefaultRolloverStrategy中—IfFileName和IfLastModified。IfFileName

  • 假设我们有一个简单的Spring Boot应用程序: pom.xml log4j2.xml(src/main/资源/) 我使用的是Windows,所以log4j2。xml包含像“file…=c:/tmp/…”这样的行。 我通常使用相对路径作为日志文件的位置,但这次我决定将日志文件从项目文件夹移到临时目录。现在,当我部署jar时,它包含log4j2。带有“file…=c:/tmp/…”的xml“BO