log4j禁用基于大小滚动创建文件

log4j禁用基于大小滚动创建文件,log4j,Log4j,我试图找到一个现成的jar/类,它让我可以选择 根据文件大小无休止地启用log4j写入文件,我的意思是: 将log4j配置为: 1.写入日志文件,直到文件大小达到10兆 2.当文件达到10兆时,它将被重命名为“文件”+当前日期后缀,仅此而已。 3.启动新日志文件转到1 每次文件达到10240KB时,它都会将文件engine.log重命名为engine_1.log 然后当main engine.log再次达到10240KB时 它将engine_1.log重命名为engine_2.log 和engi

我试图找到一个现成的jar/类,它让我可以选择 根据文件大小无休止地启用log4j写入文件,我的意思是: 将log4j配置为: 1.写入日志文件,直到文件大小达到10兆 2.当文件达到10兆时,它将被重命名为“文件”+当前日期后缀,仅此而已。 3.启动新日志文件转到1

每次文件达到10240KB时,它都会将文件engine.log重命名为engine_1.log
然后当main engine.log再次达到10240KB时
它将engine_1.log重命名为engine_2.log
和engine.log到engine_1.log等等..
这是我喜欢避免的行为
它引起的问题,例如:
因此,如果我查看engine_1.log中的内容,10分钟后,相同文件中的内容将发生更改

我只想简单地写入日志,而无需每次重命名文件。
我希望我能说清楚。

标准的Log4j库不可能实现这一点,但它是在库中实现的,它是一个单独的JAR文件,可以下载

标准
RollingFileAppender
根据日志文件大小执行日志旋转(或滚动)。如果日志文件达到指定的大小限制,将启动一个新的日志文件,并且旧的日志文件将被重命名为具有
\u 1
后缀。现有存档日志也将使用
\u 2
\u 3
等后缀进行轮换

您需要的是覆盖此默认日志文件命名策略,以使用存档日志文件名中的当前日期,而不是计数器。这可以通过
TimeBasedRollingPolicy
过滤器()进行配置

修改Log4J配置文件(Log4J.xml):


您可以在配置文件中编辑log4j apender,但是您需要通过编程来完成吗?只是想了解你的需求。不是程序性的,我想log4j只是根据大小限制写文件/日志。因此,如果我定义每个日志,当它等于10兆时,新的日志文件将启动谢谢,但是我在哪里定义文件大小?文件命名应该是怎样的呢?我以为你想禁用滚动(这是你问题的标题)。请明确说明:您要基于文件大小、基于文件日期启用滚动,还是完全禁用滚动?一切都有可能,只要告诉你到底想要什么。@user63898:现在更清楚了,我修改了我的答案,希望能有所帮助。我正在使用log4j-1.2.13.jar和apache-log4j-extras-1.1.jar:log4j:WARN在org.apache.log4j.rolling.RollingFileAppender中没有这样的属性[maxFileSize]。log4j:WARN在org.apache.log4j.rolling.RollingFileAppender中没有这样的属性[maxBackupIndex]。我犯了一个错误,你应该使用
org.apache.log4j.RollingFileAppender
而不是
org.apache.log4j.RollingFileAppender
,但是这个类没有
maxFileSize
maxBackupIndex
属性。从配置文件中删除THO。
<appender name="FILE" class="org.apache.log4j.rolling.RollingFileAppender"> 
    <param name="Threshold" value="DEBUG"/>   
    <param name="File" value="engine.log"/>
    <param name="Append" value="true"/>
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="engine_%d.log" />
    </rollingPolicy>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{ISO8601} %t %-5p [%c{1}] %m%n "/>
    </layout>
</appender>
<appender ...>
    ...
    <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
        <param name="MaxFileSize" value="10000000" />
    </triggeringPolicy>
    ...
</appender>