gpt4 book ai didi

configuration - 在 log4j2 中启用 LZMA(2)(即 `.xz`)压缩

转载 作者:行者123 更新时间:2023-12-04 16:47:51 25 4
gpt4 key购买 nike

世界现状

目前 log4j2.xml 中的 RollingFileAppender 使用 Gzip 压缩:

<RollingFile name="RollingFile"
fileName="logs/engine.log"
filePattern="logs/engine.log.%i.gz">

目标

我想切换到 LZMA(2)(即 .xz)压缩,以享受更高的压缩率。

尝试

我已经尝试将 engine.log.%i.gz 更改为 engine.log.%i.xz — 根据 the documentation :

If the file pattern ends with .gz, .zip, .bz2, .deflate, .pack200, or .xz the resulting archive will be compressed using the compression scheme that matches the suffix. The formats bzip2, Deflate, Pack200 and XZ require Apache Commons Compress. In addition, XZ requires XZ for Java.

此外,我已确保我对 XZ for Java 具有运行时依赖性— 通过 pom.xml:

<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>

结果

当触发 RollingFileAppender 时:创建的存档确实是 named engines.log.1.xz — 根据需要。

但是,其内容不正确:

期待

engines.log.1.xz 应该包含 LZMA(2) 压缩文本

实际

engines.log.1.xz 而是包含未压缩的纯文本。

完整性检查

我确认 org.tukaani:xzorg.apache.commons:commons-compress 成功地进入了我的 jar 的类路径:

🍔 jar tf mycooljar.jar | grep tukaani
org/tukaani/
org/tukaani/xz/


🍔 jar tf mycooljar.jar | grep org/apache/commons/compress
org/apache/commons/compress/
org/apache/commons/compress/changes/

此 Java 程序未部署到 J2EE 网络服务器。我相信它的类加载很简单。

总结

我已正确按照必要的说明创建 .gz 文件。

我相信创建 .xz 文件所需的唯一额外步骤是:我必须在运行时提供 XZ for Java人工制品。我已经做到了。

我是不是漏掉了什么?我很想相信以下其中一项:

  • 功能坏了
  • 文档不完整/不正确
  • log4j2 无法在运行时发现该类

最佳答案

Remko Popma confirmed that this is a bug :

  • log4j-core 只接受 *.xy 作为匹配模式——而文档建议 *.xz 是必需的输入。
  • "xy" 被传递到 new CommonsCompressAction(…) 而不是所需的 "xz"

这些都被认为是拼写错误:建议的解决方案是将两者都更改为 xz

Gary Gregory wrote a fix .该修复程序目前位于 org.apache.logging.log4j:log4j-core:2.6-SNAPSHOTmaster 中,因此应随 2.6 一起发布。

关于configuration - 在 log4j2 中启用 LZMA(2)(即 `.xz`)压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36695617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com