2017-07-18 98 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有人遇到同样的问题,这可以帮助他。

相关问题