RollingFileAppender如何与log4j2一起使用?

mem*_*und 12 java logging log4j2

RollingFileAppender习惯于正常的log4j.现在我正在切换log4j2,并且无法让appender工作.

File下面的appender按预期工作.但RollingFile永远不会创建日志记录文件.为什么?

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <File name="FILE" fileName="c:/logs.log">
            <PatternLayout pattern="%d %p %c: %m%n" />
        </File>

        <RollingFile name="ROLLING" fileName="c:/logsroll.log">
            <PatternLayout pattern="%d %p %c: %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="0.001 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="FILE" />
            <AppenderRef ref="ROLLING" />
        </Root>
    </Loggers>
</Configuration>
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 25

RollingFile标记缺少filePattern属性.

<RollingFile name="ROLLING" 
             fileName="c:/logsroll.log"
             filePattern="c:/logsroll-%i.log">
Run Code Online (Sandbox Code Playgroud)

  • 另外,如果将属性`status ="trace"`添加到顶部`<Configuration>`元素(`<Configuration status ="trace">``),log4j2调试信息将打印到控制台,以帮助您排除任何配置故障的问题. (5认同)
  • 正确。您需要filePattern属性,以便翻转机制知道如何重命名旧日志文件(并可能压缩它们)。 (2认同)

Ali*_*ahi 8

我使用log4j2版本2.0,在某些情况下,如果你没有在文件模式中设置任何日期,它会抛出错误,在这种情况下你可以使用如下的东西:

      <RollingFile name="MyFile" fileName="d:/log/bsi/admin/total/totalLog.log"
            filePattern="d:/log/totalLog-%d{MM-dd-yyyy}-%i.log">
            <PatternLayout>
                <Pattern>%d %p %c [%t] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="1 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="2000"/>
        </RollingFile>
Run Code Online (Sandbox Code Playgroud)

  • "某些情况"正好在您使用<TimeBasedTriggeringPolicy />时 (2认同)