当前位置: 首页 > 知识库问答 >
问题:

log4j2中的DefaultRolloverStrategy

刘辰钊
2023-03-14

我有麻烦配置"DefaultRolloverStrategy"log4j2.xml做以下工作:-

确保只保留最后4个日志文件,并删除旧的日志文件。所以请明确,最后4个日志文件可能在数天内或同一天,因此,最后4个日志文件可能具有相同的日期或跨越不同的日期。

下面是log4j2的内容。xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <Configuration>

        <Appenders>
            <!-- Console Appender -->
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{DEFAULT} [%t] %-5level %logger{36} - %msg%n" />
            </Console>
            <!-- Rolling File Appender -->
            <RollingFile name="File" fileName="app_log.log"
                filePattern="app_log-%d{yyyy-MM-dd}.%i.log">
                <PatternLayout pattern="%d{DEFAULT} [%t] %-5level %logger{36} - %msg%n" />
                <Policies>
                    <TimeBasedTriggeringPolicy />
                    <SizeBasedTriggeringPolicy size="2 KB" />
                </Policies>

                <DefaultRolloverStrategy>
                    <Delete basePath="" maxDepth="1">
                        <IfFileName glob="app_log*.txt">
                            <IfAny>
                                <IfAccumulatedFileSize exceeds="5 KB" />
                                <IfAccumulatedFileCount exceeds="4" />
                            </IfAny>
                        </IfFileName>
                    </Delete>
                </DefaultRolloverStrategy>

                </RollingFile>
        </Appenders>

        <Loggers>

            <Logger name="com.app.utilities" level="info" additivity="true">
                <AppenderRef ref="File" />
            </Logger>

            <Root level="debug">
                <AppenderRef ref="Console" />
            </Root>

        </Loggers>
    </Configuration>

我运行我的应用程序如下所示

java  -Dlog4j.configurationFile=./app-log4j2.xml -jar application.jar

日志是在调用上述命令的同一目录中生成的。

下面是日志文件的历史记录示例:-

File Name                   Date Modified

app_log.log                 8/27/2018 2:25 PM
app_log-2018-08-27.2.log    8/27/2018 2:25 PM
app_log-2018-08-27.1.log    8/27/2018 2:11 PM
app_log-2018-08-26.5.log    8/26/2018 2:01 PM
app_log-2018-08-26.4.log    8/26/2018 2:00 PM
app_log-2018-08-26.3.log    8/26/2018 1:58 PM
app_log-2018-08-26.2.log    8/26/2018 1:57 PM
app_log-2018-08-26.1.log    8/26/2018 1:56 PM

“DefaultRollowVersegy”似乎没有效果。

我认为我的配置是错误的。然而,我非常感谢您的建议,请纠正这一点。

此外,如果要求更改,则应删除超过20天的日志文件。这怎么可能实现呢。

非常感谢您的帮助

皮特

共有1个答案

申屠晟
2023-03-14

请看下面一行:

<IfFileName glob="app_log*.txt">

但是您的日志文件不会以. txt结尾!请参阅:

File Name                   Date Modified

app_log.log                 8/27/2018 2:25 PM

您可能需要将其更改为:

<IfFileName glob="app_log*.log">

这才是我真正想到的。你可能还需要做一些调整,但先试试。

 类似资料:
  • 我正在迁移log4j1.2。8至log4j 2.3。一切正常,除此之外,我没有为PropertyConfiguration找到任何替代品。 是否有其他类来处理PropertyConfiguration之前所做的工作?

  • 我正在使用log4j的现有系统上工作,我想更新到log4j2。 有一个自定义Springbean从文件加载配置。我需要保持这种方法。我不能使用"log4j.configuration文件"系统属性。 我们有一个属性文件,其中指定了当前log4j.xml的路径(NFS共享) Springbean有以下代码。。。 } 在log4j2中,没有PropertyConfiguration。如何加载log4j

  • 根据http://logging.apache.org/log4j/2.x/manual/configuration.html的Log4J2手册,使用 并记录语句,如 然而,我得到了两次信息,即。 “简单信息消息” “简单信息消息”

  • 我试图根据文档(以及相关的SO问题)设置LOG4J,但它不会创建假定的文件,但WildFly中有这样的日志: web.xml app.war/WEB-INF/类/log4j2.xml app.war/WEB-INF/lib 你能告诉我怎么了吗?我尝试在web.xml中注释掉上下文参数,并依赖自动配置,但是没有变化。 编辑 当我添加以下代码时 失败的方式不同(我现在没有时间调查)

  • log4j2的半天滚动不适用于给定的属性文件。 如果给定时间间隔,并且文件夹以和的形式给出,则翻转将每小时和每分钟工作一次 如何半天翻转?log4j2支持吗?

  • 但是房产没有被选中。例如,下面的代码创建一个${log-path}文件夹来存储日志文件,而不是所需的logs文件夹。 我做错了什么?