我想使用Apache中定义的RollingFile log4j2来在每次启动应用程序时生成一个新的日志文件。
根据文档,您可以找到这里
OnStartup触发策略 如果日志文件早于当前JVM的启动时间,并且满足或超过了最小文件大小,则OnStartupTriggeringPolicy策略将导致滚动。 OnStartupTriggeringPolicy参数 参数名称类型描述 minSize长为文件必须滚动的最小大小。无论文件大小是什么,大小为零的文件都会导致滚动。默认值为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 %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 MB、0MB或任何具有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");
}
}发布于 2019-02-09 00:11:16
问题是您已经在配置中设置了append="False"。
根据log4j2手册的说法:
如果为true -默认情况下,记录将追加到文件的末尾。当设置为false时,将在写入新记录之前清除该文件。
这意味着log4j2将在写入文件之前清除该文件,这意味着文件大小为零,不需要滚动。如果删除此参数或将其设置为true,则每次启动程序时都会创建一个新文件。
发布于 2019-02-08 12:46:35
试着用这个
<Appender type="RollingFile" name="RollingFile" fileName="demo.log">
<Policies>
<OnStartupTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="10MB" />
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
<DefaultRolloverStrategy max="10"/>
<Layout type="PatternLayout" pattern="%d{HH:mm:ss.SSS} [%level] [%C{1}] %message%n"/>
</Appender>https://stackoverflow.com/questions/54592406
复制相似问题