2017-07-18 32 views
1

以下是我log4j2的CONFIGRATION:無法創建新的日誌文件,一旦開始了我的服務使用log4j2

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="trace" name="MyApp" packages="com.swimap.base.launcher.log"> 
    <Appenders> 
    <RollingFile name="RollingFile" fileName="logs/app-${date:MM-dd-yyyy-HH-mm-ss-SSS}.log" 
       filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> 
     <PatternLayout> 
     <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> 
     </PatternLayout> 
     <Policies> 
     <SizeBasedTriggeringPolicy size="1 KB"/> 
     </Policies> 
     <DefaultRolloverStrategy max="3"/> 
    </RollingFile> 
    </Appenders> 
    <Loggers> 
    <Root level="trace"> 
     <AppenderRef ref="RollingFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 

的問題是,當每次啓動我的服務的時候,一個新的日誌仍會被創建的舊一個還沒有達到特定的大小。如果程序頻繁重啓,我會得到許多以'.log'結尾的日誌文件,這些文件永遠不會被壓縮。

日誌我得到這樣的:

/log4j2/logs 
/log4j2/logs/2017-07 
/log4j2/logs/2017-07/app-07-18-2017-1.log.gz 
/log4j2/logs/2017-07/app-07-18-2017-2.log.gz 
/log4j2/logs/2017-07/app-07-18-2017-3.log.gz 
/log4j2/logs/app-07-18-2017-20-42-06-173.log 
/log4j2/logs/app-07-18-2017-20-42-12-284.log 
/log4j2/logs/app-07-18-2017-20-42-16-797.log 
/log4j2/logs/app-07-18-2017-20-42-21-269.log 

有人能告訴我如何可以追加登錄到存在的日誌文件,當我啓動我的程序?非常感謝你能否幫助我更接近答案!

回答

0

我想你的問題是你的log4j2配置文件中有fileName="logs/app-${date:MM-dd-yyyy-HH-mm-ss-SSS}.log

該fileName模板意味着log4j2將創建名稱包含當前日期+小時+分鐘+秒+毫秒的名稱的日誌文件。

您應該刪除HH-mm-ss-SSS部分,這將允許您每日滾動文件,並且不會在每次應用程序重新啓動時創建新文件。

你可以玩模板並選擇你需要的格式。

如果你只想要一個日誌文件永遠 - 然後創建不變的文件名,像fileName=app.log

+0

非常感謝,哥們。你的建議似乎很有用。但是,由於業務不允許,我無法更改日誌文件名的格式。 –

0

不難實現這一點。有一個接口DirectFileRolloverStrategy,實現以下方法:

public String getCurrentFileName(RollingFileManager manager) 

Mybe有人遇到同樣的問題,這可以幫助他。

相關問題