gpt4 book ai didi

java - log4j2 RollingFile 附加程序

转载 作者:行者123 更新时间:2023-12-02 01:39:53 27 4
gpt4 key购买 nike

我想使用 Apache log4j2 库中定义的 RollingFile 附加程序,在每次启动应用程序时生成一个新的日志文件。

根据文档,您可以找到here :

OnStartup Triggering Policy

The OnStartupTriggeringPolicy policy causes a rollover if the log file is older than the current JVM's start time and the minimum file size is met or exceeded.

OnStartupTriggeringPolicy Parameters

Parameter Name Type Description

minSize long The minimum size the file must have to roll over. A size of zero will cause a roll over no matter what the file size is. The default value is 1, which will prevent rolling over an empty file.

我定义了这个配置文件:

<?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 %logger{36} - %msg%n"/>
</Console>

<RollingFile name="fDLL.test.rollingfile" append="False"
filename="d:/logs/fdll-test.log" filePattern="d:/logs/fdll-test-%i.log" >

<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>

<Policies>
<OnStartupTriggeringPolicy minSize="0"/>
</Policies>
</RollingFile>

</Appenders>

<Loggers>
<Root level="all">
<AppenderRef ref="Console"/>
</Root>

<Logger name="fDLL.test" level="all" additivity="False">
<AppenderRef ref="Console"/>
<AppenderRef ref="fDLL.test.rollingfile"/>
</Logger>

</Loggers>
</Configuration>

如果我运行该程序,我会收到以下错误消息:

2019-02-08 13:00:35,506 ERROR OnStartupTriggeringPolicy contains an invalid element or attribute "minSize"

我无法理解错误消息。如果我使用其他值,例如 0 MB0MB 或任何其他带有 0 的值,则不会发生任何变化。

在这两种情况下,无论有没有 minSize 属性,我最终都会在日志目录中得到一个文件,即 fdll-test.log

我错过了什么?

<小时/>

主类是这样的:

package fDLL.test;

import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;

public class TestLogging {
private static final Logger logger = LogManager.getLogger(TestLogging.class.getPackage().getName());

public static void main(String[] args) {
System.out.println("Test");
logger.warn("warning");
logger.info("info");
logger.error("error");
}
}

最佳答案

问题是您在配置中设置了 append="False"

根据log4j2 manual :

When true - the default, records will be appended to the end of the file. When set to false, the file will be cleared before new records are written.

这意味着 log4j2 将在写入文件之前清除该文件,这意味着大小将为零并且不需要翻转。如果您删除此参数或设置为 true,则每次启动程序时都会创建一个新文件。

关于java - log4j2 RollingFile 附加程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54592406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com