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

删除带有Log4j2的旧文件时出错

柳俊健
2023-03-14

我需要删除每天滚动的旧日志文件。要限制我尝试的文件数,请执行以下操作:

    <RollingFile 
        name="FileAppender" 
        fileName="${baseDir}/mylog.log" 
        filePattern="${baseDir}/mylog %d{yyyy-MM-dd}.log.zip">
         <PatternLayout pattern="%d{ISO8601} [%p] %c{1} - %m%n"/>
         <Policies>              
            <TimeBasedTriggeringPolicy interval="1" />            
        </Policies>
        <DefaultRolloverStrategy max="5">        
    </RollingFile>

但是日志没有被删除。

现在我在尝试

    <DefaultRolloverStrategy>
        <Delete basePath="${baseDir}" maxDepth="0">                 
            <IfLastModified age="5d" />
        </Delete>
    </DefaultRolloverStrategy>

但我得到了一个错误:

错误DefaultRolloverStrategy包含无效元素或属性“Delete”

我的log4j2有点问题。xml文件?

我将maven与以下内容一起使用:

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.0.1</version> 
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>2.0.1</version>
    </dependency>

共有1个答案

李烨烁
2023-03-14

您需要升级您的Log4j版本。删除功能是在2.5中引入的。现在的最新版本是2.7。我建议使用最新的。

还要检查文档中的maxDepth属性。您可能应该指定1个或多个。零表示目录本身,而不是该目录中的文件。

 类似资料:
  • 问题内容: 我正在尝试将 log4j 配置为仅保留指定数量的备份文件或保留不超过一定年龄的文件。最终,我希望有 时间(每天)基于触发策略, 并保留30个备份文件或删除早于30天的文件。 经过一些研究后,我了解到在使用 时间策略 时无法指定备份文件的最大数量,但是遇到了这个问题https://issues.apache.org/jira/browse/LOG4J2-435和此文档片段http: //

  • 我在webapp中使用以下log4j RollingFile appender。 使用时,当日志滚动时,旧文件将重命名为具有索引号的文件名(使用%i指定),因此所有旧文件都应重命名并保留。 我通过以下代码以编程方式滚动日志。 但是,在7次滚动之后,现有文件将被删除(未根据指定的重命名),并在新文件中继续日志。 这里有什么问题?

  • 这是我的log4j2.yaml。现在,这个记录器在一天内创建一个文件,当这一天结束时,记录器将创建一个文件夹“归档”,并将旧的日志文件放在这个文件夹中。我需要删除7天前创建的所有旧日志。我做错了什么?请帮帮我

  • 下面的log4j2配置无法删除我的旧文件。 我的日志文件是按照基于时间和基于大小的策略正确生成的,但我不明白为什么不删除这些文件。一切似乎都是正确的,我的日志中没有错误。 我没有前导或尾随空格。 我已经浪费了很多时间来调试这个。官方的log4j2文档很糟糕,因为它没有给出基于java属性的配置示例。 有没有办法解决这个问题? 谢啦

  • 我使用下面的log4j2。xml 我想要的是旧的日志文件被删除,如果累积的大小超过。但是log4j2首先删除最近修改的文件。https://logging.apache.org/log4j/2.x/manual/appenders.html说有一个路径排序参数可以做到这一点。有人能告诉我如何指定相反的将逻辑排序为默认值?

  • 我有一个目录,它是在执行应用程序后创建的。在使用应用程序的过程中,它充满了一些图片,这些图片是ComboBox的ItemsSource。在关闭应用程序之前,我试图通过设置new()或NULL来清除ItemsSource并删除该目录。如果目录为空,则会正常删除。但除此之外——什么都没有发生,也没有例外。我做错了什么? 创建目录并将路径值分配给“FeedBackScreenshotsPath” 删除