java—如何使用log4j.properties和zipped使日志文件根据大小旋转

kpbwa7wx  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(531)

主题-rollingfileappender,以及如何压缩旋转的文件
rollingfileappender根据文件大小旋转日志文件。maxfilesize表示文件的最大大小,而maxbackupindex表示要保留在日志文件夹中的文件量。
下面给出了一个示例属性文件:

1   log4j.rootLogger=INFO, fileLogger
2   log4j.appender.fileLogger=org.apache.log4j.RollingFileAppender
3   log4j.appender.fileLogger.layout=org.apache.log4j.PatternLayout
4   log4j.appender.fileLogger.layout.ConversionPattern=%d [%t] %-5p (%F:%L) - %m%n
5   log4j.appender.fileLogger.File=example.log
6   log4j.appender.fileLogger.MaxFileSize=1KB
7   log4j.appender.fileLogger.MaxBackupIndex=5

基于该配置,我们可以假设日志将旋转,如下例所示

...Log.3
...Log.2
...Log.1

但它们没有拉链!
我的问题是——基于样本属性,我需要在样本中更改什么 log4j.properites 所以滚动的文件也会被压缩。

例如,我们配置了下面的log4j(根据malte的建议),但是旋转的文件没有压缩
注意-此log4j来自ambari的advanced hive-log4j

log4j.appender.DRFA=org.apache.log4j.RollingFileAppender
log4j.appender.DRFA.rollingPolicy.FileNamePattern=${hive.log.dir}/${hive.log.file}-.%i.log.zip
log4j.appender.DRFA.MaxBackupIndex=10
log4j.appender.DRFA.MaxFileSize=1KB

我们得到的日志文件示例(正如我们看到的,文件没有压缩)

-rw-r--r--  1 hive hadoop    1055 Aug 15 16:00 hiveserver2.log.5
-rw-r--r--  1 hive hadoop    1203 Aug 15 16:00 hiveserver2.log.4
-rw-r--r--  1 hive hadoop    1098 Aug 15 16:00 hiveserver2.log.3
-rw-r--r--  1 hive hadoop    1028 Aug 15 16:00 hiveserver2.log.2
-rw-r--r--  1 hive hadoop    1239 Aug 15 16:00 hiveserver2.log.1
-rw-r--r--  1 hive hadoop       0 Aug 15 16:00 hiveserver2.log
-rw-r--r--  1 hive hadoop    1065 Aug 15 16:00 hivemetastore.log.4
-rw-r--r--  1 hive hadoop    1098 Aug 15 16:01 hivemetastore.log.3
-rw-r--r--  1 hive hadoop    1120 Aug 15 16:01 hivemetastore.log.2
-rw-r--r--  1 hive hadoop    1098 Aug 15 16:01 hivemetastore.log.1
-rw-r--r--  1 hive hadoop     470 Aug 15 16:01 hivemetastore.log
t8e9dugd

t8e9dugd1#

正确的配置应如下所示(已测试和验证)

log4j.appender.DRFA.layout=org.apache.log4j.PatternLayout
log4j.appender.DRFA=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.DRFA.rollingPolicy=org.apache.log4j.rolling.FixedWindowRollingPolicy  
log4j.appender.DRFA.triggeringPolicy=org.apache.log4j.rolling.SizeBasedTriggeringPolicy  
log4j.appender.DRFA.rollingPolicy.ActiveFileName =${hive.log.dir}/${hive.log.file}.log
log4j.appender.DRFA.rollingPolicy.FileNamePattern=${hive.log.dir}/${hive.log.file}-.%i.log.gz
log4j.appender.DRFA.triggeringPolicy.MaxFileSize=10000
log4j.appender.DRFA.rollingPolicy.maxIndex=10

/var/log/hive下的示例

-rw-r--r--  1 hive hadoop 1019 Aug 15 20:13 hivemetastore.log-.2.log.gz
-rw-r--r--  1 hive hadoop 1159 Aug 15 20:18 hiveserver2.log-.1.log.gz
-rw-r--r--  1 hive hadoop 5353 Aug 15 20:21 hiveserver2.log
-rw-r--r--  1 hive hadoop 1028 Aug 15 20:22 hivemetastore.log-.1.log.gz
-rw-r--r--  1 hive hadoop 2218 Aug 15 20:22 hivemetastore.log
-rw-r--r--  1 hive hadoop 4361 Aug 15 20:24 hiveserver2-report.json.tmp
-rw-r--r--  1 hive hadoop 4254 Aug 15 20:24 hivemetastore-report.json.tmp
7gyucuyw

7gyucuyw2#

您应该通过使用文件结尾来实现压缩文件 .zip 惯例。看到了吗https://logging.apache.org/log4j/2.x/manual/appenders.html#rolloverstrategies 更多的压缩方案。

log4j.appender.fileLogger.filePattern=%d{yyyyMMdd.HHmmss}.log.zip

或者如果你不想要一个日期,只想要一个编号的日志:

log4j.appender.fileLogger.filePattern=%i.log.zip

相关问题