如何使用 log4j.properties 使日志文件根据大小轮换并压缩
How to make log files rotate based on size using log4j.properties and also zipped
主题 - 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
中进行更改,以便滚动的文件也将 压缩 .
-
例如,我们配置了以下(根据 Malte 建议)log4j,但旋转的文件未压缩
注意 - 此 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
您应该使用文件结尾约定 .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
正确的配置应该如下(已测试验证)
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
主题 - 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
中进行更改,以便滚动的文件也将 压缩 .
-
例如,我们配置了以下(根据 Malte 建议)log4j,但旋转的文件未压缩
注意 - 此 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
您应该使用文件结尾约定 .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
正确的配置应该如下(已测试验证)
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