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>