【问题标题】:How does RollingFileAppender work with log4j2?RollingFileAppender 如何与 log4j2 一起工作?
【发布时间】:2014-01-25 08:26:37
【问题描述】:

我习惯于在普通 log4j 上使用 RollingFileAppender。现在我切换到log4j2,并且无法让附加程序工作。

下面的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>

【问题讨论】:

    标签: java logging log4j2


    【解决方案1】:

    我使用的是 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>
    

    【讨论】:

    • “某些情况”正是您使用
    • 在我的例子中,属性filePattern是用小写的
    【解决方案2】:

    RollingFile 标记缺少 filePattern 属性。

    <RollingFile name="ROLLING" 
                 fileName="c:/logsroll.log"
                 filePattern="c:/logsroll-%i.log">
    

    【讨论】:

    • 正确。您需要 filePattern 属性,以便翻转机制知道如何重命名旧日志文件(并可能压缩它们)。
    • 此外,如果您将属性status="trace" 添加到顶部&lt;Configuration&gt; 元素(&lt;Configuration status="trace"&gt;),log4j2 调试信息将打印到控制台以帮助您解决任何配置问题。
    • 你猜我怎么能在配置文件中而不是在 XML 配置中使用这个属性?
    • 如果不是XML config,究竟是什么意思configuration file? (See here 用于没有配置文件的配置方法。)
    • 所以父文件夹(这里的c:/)需要指定两次?在文件名和文件模式中?如果它们被指定不同怎么办?
    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    相关资源
    最近更新 更多