我使用下面的log4j2。xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<RollingRandomAccessFile
name="MainLogFile"
fileName="${sys:solr.log.dir}/solr.log.json"
filePattern="${sys:solr.log.dir}/solr.log.%d{yyyy-MM-dd}.%i.log.json">
<EcsLayout serviceName="my-solr"/>
<Policies>
<OnStartupTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="10 KB"/>
<TimeBasedTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="${sys:solr.log.dir}" maxDepth="1">
<IfFileName glob="solr.log.*.log.json">
<IfAny>
<IfAccumulatedFileSize exceeds="100 KB" />
</IfAny>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<!-- Use <AsyncLogger/<AsyncRoot and <Logger/<Root for asynchronous logging or synchonous logging respectively -->
<AsyncLogger name="org.apache.hadoop" level="warn"/>
<AsyncLogger name="org.apache.solr.update.LoggingInfoStream" level="off"/>
<AsyncLogger name="org.apache.zookeeper" level="warn"/>
<!-- HttpSolrCall adds markers denoting the handler class to allow fine grained control, metrics are
very noisy so by default the metrics handler is turned off to see metrics logging set DENY to ACCEPT -->
<AsyncLogger name="org.apache.solr.servlet.HttpSolrCall" level="info">
<MarkerFilter marker="org.apache.solr.handler.admin.MetricsHandler" onMatch="DENY" onMismatch="ACCEPT"/>
</AsyncLogger>
<AsyncRoot level="info">
<AppenderRef ref="MainLogFile"/>
</AsyncRoot>
</Loggers>
</Configuration>
我想要的是旧的日志文件被删除,如果累积的大小超过。但是log4j2首先删除最近修改的文件。https://logging.apache.org/log4j/2.x/manual/appenders.html说有一个路径排序参数可以做到这一点。有人能告诉我如何指定相反的将逻辑排序为默认值?
这个问题似乎是DefaultRolling策略的默认最大值
使用
<DefaultRolloverStrategy min="1" max="9999999">
<Delete basePath="${sys:solr.log.dir}" maxDepth="1">
<IfFileName glob="solr.log.*.log.json">
<IfAny>
<IfAccumulatedFileSize exceeds="100 KB" />
</IfAny>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
它按预期工作
我在SpringBoot中使用logback,但无法删除旧的日志文件。 我在logback-spring.xml文件中定义了以下appender: 即使我设置了“MaxHistory”和“CleanHistoryonStart”,超过10天的日志文件也不会被删除。既不是翻转也不是启动。
这是我的log4j2.yaml。现在,这个记录器在一天内创建一个文件,当这一天结束时,记录器将创建一个文件夹“归档”,并将旧的日志文件放在这个文件夹中。我需要删除7天前创建的所有旧日志。我做错了什么?请帮帮我
问题内容: 我正在尝试将 log4j 配置为仅保留指定数量的备份文件或保留不超过一定年龄的文件。最终,我希望有 时间(每天)基于触发策略, 并保留30个备份文件或删除早于30天的文件。 经过一些研究后,我了解到在使用 时间策略 时无法指定备份文件的最大数量,但是遇到了这个问题https://issues.apache.org/jira/browse/LOG4J2-435和此文档片段http: //
我最近一直在使用log4j2,遇到了一个问题。发生翻转时,活动日志文件保留其日志。是否可以清除日志文件,以便滚动的文件将只保留日志在名称中指定的时间段?
我正在尝试以编程方式配置log4j2v2。11.1作为DefaultRolloverStrategy的一部分,使用新的删除操作删除旧文件。 正如您可以从下面的代码中看到的,我已将系统设置为每天创建日志文件,并在文件大小达到1MB时滚动该文件。 我尝试使用两个条件将删除操作添加到DefaultRolloverStrategy中—IfFileName和IfLastModified。IfFileName
我使用在文件中配置的logback来管理应用程序的日志。我想: 创建日志文件,这些日志文件在应用程序启动时贴上时间戳,并在应用程序的生命周期内作为单个日志文件保留。(我们可能同时运行一个应用程序的多个实例,或者在一天内运行多个实例,它们可能会运行几天。) 保持干净的日志文件目录,以便删除超过给定期间的日志。 实现第二个建议使用和,如下所示--这将日志文件保存7天。但是,这将使用一个文件来记录给定日