首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >log4j2 RollingFile appender

log4j2 RollingFile appender
EN

Stack Overflow用户
提问于 2019-02-08 12:23:01
回答 2查看 6.3K关注 0票数 1

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

根据文档,您可以找到这里

OnStartup触发策略 如果日志文件早于当前JVM的启动时间,并且满足或超过了最小文件大小,则OnStartupTriggeringPolicy策略将导致滚动。 OnStartupTriggeringPolicy参数 参数名称类型描述 minSize长为文件必须滚动的最小大小。无论文件大小是什么,大小为零的文件都会导致滚动。默认值为1,这将防止在空文件上滚动。

我定义了这个配置文件:

代码语言:javascript
复制
<?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>

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

代码语言:javascript
复制
2019-02-08 13:00:35,506 ERROR OnStartupTriggeringPolicy contains an invalid element or attribute "minSize"

我无法理解错误信息。如果我使用其他值,如0 MB0MB或任何具有0的其他值,则不会发生任何更改。

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

我遗漏了什么?

主要的课程是:

代码语言:javascript
复制
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");
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-09 00:11:16

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

根据log4j2手册的说法:

如果为true -默认情况下,记录将追加到文件的末尾。当设置为false时,将在写入新记录之前清除该文件。

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

票数 2
EN

Stack Overflow用户

发布于 2019-02-08 12:46:35

试着用这个

代码语言:javascript
复制
 <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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54592406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档