【问题标题】:How to use SizeBasedTriggeringPolicy with TimeBasedRollingPolicy in Log4j?如何在 Log4j 中使用 SizeBasedTriggeringPolicy 和 TimeBasedRollingPolicy?
【发布时间】:2012-09-04 05:50:14
【问题描述】:

您好,我正在使用 Log4j 进行日志记录。下面是我的配置。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
xmlns:log4j='http://jakarta.apache.org/log4j/'>

<appender name="FileAppender_Comp3" class="org.apache.log4j.rolling.RollingFileAppender"> 

<rollingPolicy name="file" class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
<param name="FileNamePattern" value="log/Comp3_%d{dd-MM-yyyy HH-mm-ss}.log" />
</rollingPolicy> 

<triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
<param name="MaxFileSize" value="3kb"/>
</triggeringPolicy>

<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %5p [%t] %c (%F:%L) - %m%n"/>
</layout>

</appender>

但是当我运行文件时,它会抛出错误。

log4j:WARN Failed to set property [maxFileSize] to value "3kb". 

我该如何解决这个问题。请帮帮我。

【问题讨论】:

  • 只是猜测,但您是否尝试将 3kb 替换为 3072?在 JavaDoc (goo.gl/ahbl8) 中,我发现“以字节为单位设置翻转阈值大小”,所以我认为您不能以 KB、MB 或其他后缀传递该值。
  • 查看我对类似问题的回答:stackoverflow.com/questions/13936021/…
  • @Samurai,你找到解决方案了吗?

标签: java log4j rollingfileappender


【解决方案1】:

如果您使用的是Log4j 2,您可以以 KB 或 MB 为单位指定大小。

下面的相关 XML。

<Policies>
    <!-- Starts a new log on tomcat start -->
    <OnStartupTriggeringPolicy /> 
    <!--  Starts a new file when size reaches threshold -->
    <SizeBasedTriggeringPolicy size="10 MB" /> 
    <!-- causes a rollover once the date/time pattern no longer 
       applies to the active file -->
    <TimeBasedTriggeringPolicy /> 
</Policies

详情请见https://logging.apache.org/log4j/2.x/manual/appenders.html

【讨论】:

  • 如果我们不指定 KB/MB 而只指定一个数字size=10 会怎样,默认情况会怎样?
  • 现在是 KB、MB 和 GB。
【解决方案2】:

根据文档,MaxFileSize 必须是长值。请查看https://logging.apache.org/log4j/extras/apidocs/org/apache/log4j/rolling/SizeBasedTriggeringPolicy.html

因此,在这种情况下,值应该是 3072 而不是 3kb。

【讨论】:

    【解决方案3】:

    刚好遇到这个问题,觉得应该分享一下解决方案:

    将 MaxFileSize 参数设置为以字节为单位的值,因此对于您的示例,您可以将其设置为

    <param name="MaxFileSize" value="3072"/>
    

    Here 是一个类似的问题,此解决方案得到确认。

    【讨论】:

      猜你喜欢
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 2021-09-18
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多