我使用了log4j的滚动策略来压缩达到一定大小的文件。以下log4j属性工作正常。
log4j.appender.FILE=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.FILE.rollingPolicy=org.apache.log4j.rolling.FixedWindowRollingPolicy
log4j.appender.FILE.rollingPolicy.maxIndex=13
log4j.appender.FILE.triggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy
log4j.appender.FILE.triggeringPolicy.MaxFileSize=80
log4j.appender.FILE.rollingPolicy.FileNamePattern=log/projectlog_${current.date.time}.%i.log.gz
log4j.appender.FILE.rollingPolicy.ActiveFileName=log/project_log_${current.date.time}.log
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m%n
但这里的问题是在它生成一个压缩文件之后,它还将压缩gz文件中的文件重命名为gz文件。
在我的场景中,我不希望log4j重命名压缩gz存档中存在的文件。有没有什么方法可以限制log4j不更改它正在压缩的文件名。
1条答案
按热度按时间jdzmm42g1#
不能使用log4j@umartahir提供的代码。
正如您在
FixedWindowRollingPolicy
类,在实际处理rollover
,他们首先指示RollingFileAppender
要同步重命名文件,然后根据需要异步压缩文件,请执行以下操作:他回来了
RolloverDescription
将用于RollingFileAppender
rollover
处理实际滚动过程的方法:如果您需要这种特殊的行为,也许您可以创建自己的滚动策略,并尝试实现类似于中所做的事情
FixedWindowRollingPolicy
,并将log4j配置为使用这个新的滚动策略。也就是说,要知道gzip只意味着压缩数据,没有实际的文件名或文件条目,只是压缩数据。如果你使用
gzip
工具,它采用归档文件的名称来压缩、压缩数据,并将结果存储在一个带有后缀的新文件中,通常是.gz
. 这就是log4j试图在代码中模仿的行为。