2012-09-04 54 views
7

嗨我正在使用Log4j进行日志记录。以下是我的配置。如何在Log4j中使用SizeBasedTriggeringPolicy和TimeBasedRollingPolicy?

<?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". 

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

+1

只是一个猜测,但你是否尝试用3072替换3kb?在JavaDoc(http://goo.gl/ahbl8)中,我找到了“以字节为单位设置翻转阈值大小”,所以我认为你不能通过KB,MB或其他后缀传递值。 –

+0

查看我对类似问题的回答:http://stackoverflow.com/questions/13936021/rolling-logs-by-size-and-time/14202093#14202093 –

+0

@武士,你有没有找到解决方案? – vijendra

回答

0

正好碰到这个问题,我想我应该分享的解决方案:

的MAXFILESIZE参数组以字节为单位的值,所以你的例子中,你将它设置为

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

Here是一个类似的问题,这个解决方案得到证实。

2

如果您使用的是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