Configuration 在log4j2中启用LZMA(2)(即“.xz”)压缩 世界现状
目前,我们在Configuration 在log4j2中启用LZMA(2)(即“.xz”)压缩 世界现状,configuration,compression,log4j2,lzma,xz,Configuration,Compression,Log4j2,Lzma,Xz,目前,我们在log4j2.xml中的RollingFileAppender使用Gzip压缩: <RollingFile name="RollingFile" fileName="logs/engine.log" filePattern="logs/engine.log.%i.gz"> 结果 触发RollingFileAppender时:创建的归档文件确实根据需要命名为engines.log.1.xz 但其内容不正确: 期望值 en
log4j2.xml
中的RollingFileAppender
使用Gzip压缩:
<RollingFile name="RollingFile"
fileName="logs/engine.log"
filePattern="logs/engine.log.%i.gz">
结果
触发RollingFileAppender时:创建的归档文件确实根据需要命名为engines.log.1.xz
但其内容不正确:
期望值
engines.log.1.xz
应包含LZMA(2)压缩文本
实际的
engines.log.1.xz
包含纯文本和未压缩文本
健康检查
我确认org.tukaani:xz
和org.apache.commons:commons compress
成功地将其放入我的jar的类路径中:
:
log4j core
仅接受*.xy
作为匹配模式,而文档建议*.xz
是必需的输入
“xy”
被传递到新的CommonCompression(…)
中,而不是所需的“xz”
这些都被认为是打字错误:建议的解决方案是将两者都改为xz
。修复程序目前位于org.apache.logging.log4j:log4j core:2.6-SNAPSHOT的master
,因此应随2.6
发布,我发现可能我需要输入.xy
,而不是.xz
。如果使用.xy
:log4j2 RollingAppender无法生成归档文件。即:它创建空白的.xy
文件,并将未归档的明文保留为.log
文件。闻起来像是一个错误的实现。下面是我作为证据从org.apache.logging.log4j.core.appender.rolling.DefaultRolloverStrategy
:静态枚举文件扩展{XY(.XY”){@Override Action createCompression中展示的代码(最终字符串重命名、最终字符串压缩名称、最终布尔删除源、最终整型压缩级别){//“gz”、“bzip2”、“xz”、“pack200”或“deflate”之一。返回新的CommonCompression(“xy”、源(重命名)、目标(压缩名称)、删除源);}}
-假设它确实是一个bug。+10。这是一个bug,将在下一版本中解决。感谢您提出此问题!
<dependency>
<!-- Support Log4j2 Log compression schemes: ".gz", ".zip", ".bz2", ".deflate", ".pack200", [".xz" (part 1 of 2)] -->
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<!-- Support Log4j2 Log compression scheme [".xz" (part 2 of 2)] -->
<groupId>org.tukaani</groupId>
<artifactId>xz</artifactId>
<version>1.5</version>
</dependency>