Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用log4j.properties和zipped使日志文件根据大小旋转_Java_Hadoop_Ambari_Log4j - Fatal编程技术网

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

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.

主题-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
我们获得的日志文件示例(正如我们看到的,文件未压缩)


您应该使用文件结尾
.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