Java 如何使用log4j.properties和zipped使日志文件根据大小旋转
主题-RollingFileAppender,以及如何压缩旋转的文件 RollingfileAppender根据文件大小旋转日志文件。MaxFileSize表示文件的最大大小,而MaxBackupIndex表示要保留在日志文件夹中的文件量 下面给出了一个示例属性文件:Java 如何使用log4j.properties和zipped使日志文件根据大小旋转,java,hadoop,ambari,log4j,Java,Hadoop,Ambari,Log4j,主题-RollingFileAppender,以及如何压缩旋转的文件 RollingfileAppender根据文件大小旋转日志文件。MaxFileSize表示文件的最大大小,而MaxBackupIndex表示要保留在日志文件夹中的文件量 下面给出了一个示例属性文件: 1 log4j.rootLogger=INFO, fileLogger 2 log4j.appender.fileLogger=org.apache.log4j.RollingFileAppender 3 log4j.
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
我们获得的日志文件示例(正如我们看到的,文件未压缩)
您应该使用文件结尾
.zip
约定来实现压缩文件。
有关更多压缩方案,请参阅
log4j.appender.fileLogger.filePattern=%d{yyyyMMdd.HHmmss}.log.zip
或者,如果您不想要日期,只想要编号的日志:
log4j.appender.fileLogger.filePattern=%i.log.zip
正确的配置应如下所示(已测试和验证) 我们在/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
什么是filePattern=%I(我的意思是?)%I表示一个整数计数器。参见参数
filePattern
的文档。参见我的更新-例如,我们配置了下面的log4j,但是旋转的文件没有压缩(仍然没有压缩文件)
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
-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