2012-09-04 46 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