我想使用RollingFile
附加器(在Apache log4j2库中定义)在每次启动应用程序时生成一个新的日志文件。
根据文档,您可以找到here:
启动时触发策略
OnStartupTriggeringPolicy政策 如果日志文件早于当前JVM的日志文件,则会导致过渡 开始时间,并且达到或超过了最小文件大小。
OnStartupTriggeringPolicy参数
参数名称类型描述
minSize long文件必须翻转的最小大小。尺寸 不论文件大小是多少,零都将导致翻转。的 默认值为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");
}
}
答案 0 :(得分:1)
问题是您在配置中设置了append="False"
。
为true时-默认值,记录将附加到 文件。设置为false时,将在新记录之前清除文件 被写。
这意味着log4j2将在写入文件之前清除文件,这意味着大小将为零,并且不需要翻转。如果您删除此参数或将其设置为true
,则每次启动程序时都会创建一个新文件。
答案 1 :(得分:0)
尝试使用此
<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>