From 7d916f4f08792eb212d61dcde9e0a6b771ac8753 Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Wed, 14 Jun 2023 14:31:29 +0530
Subject: [PATCH 1/4] Include zstd compression
---
.../core/appender/rolling/FileExtension.java | 17 +++++++++++++----
.../rolling/action/CommonsCompressAction.java | 6 +++---
2 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java
index d3d03e6483e..7259d7f44ab 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/FileExtension.java
@@ -19,6 +19,7 @@
import java.io.File;
import java.util.Objects;
+import org.apache.commons.compress.compressors.CompressorStreamFactory;
import org.apache.logging.log4j.core.appender.rolling.action.Action;
import org.apache.logging.log4j.core.appender.rolling.action.CommonsCompressAction;
import org.apache.logging.log4j.core.appender.rolling.action.GzCompressAction;
@@ -46,7 +47,7 @@ Action createCompressAction(final String renameTo, final String compressedName,
@Override
Action createCompressAction(final String renameTo, final String compressedName, final boolean deleteSource,
final int compressionLevel) {
- // One of "gz", "bzip2", "xz", "pack200", or "deflate".
+ // One of "gz", "bzip2", "xz", "zstd", "pack200", or "deflate".
return new CommonsCompressAction("bzip2", source(renameTo), target(compressedName), deleteSource);
}
},
@@ -54,7 +55,7 @@ Action createCompressAction(final String renameTo, final String compressedName,
@Override
Action createCompressAction(final String renameTo, final String compressedName, final boolean deleteSource,
final int compressionLevel) {
- // One of "gz", "bzip2", "xz", "pack200", or "deflate".
+ // One of "gz", "bzip2", "xz", "zstd", "pack200", or "deflate".
return new CommonsCompressAction("deflate", source(renameTo), target(compressedName), deleteSource);
}
},
@@ -62,7 +63,7 @@ Action createCompressAction(final String renameTo, final String compressedName,
@Override
Action createCompressAction(final String renameTo, final String compressedName, final boolean deleteSource,
final int compressionLevel) {
- // One of "gz", "bzip2", "xz", "pack200", or "deflate".
+ // One of "gz", "bzip2", "xz", "zstd", "pack200", or "deflate".
return new CommonsCompressAction("pack200", source(renameTo), target(compressedName), deleteSource);
}
},
@@ -70,9 +71,17 @@ Action createCompressAction(final String renameTo, final String compressedName,
@Override
Action createCompressAction(final String renameTo, final String compressedName, final boolean deleteSource,
final int compressionLevel) {
- // One of "gz", "bzip2", "xz", "pack200", or "deflate".
+ // One of "gz", "bzip2", "xz", "zstd", "pack200", or "deflate".
return new CommonsCompressAction("xz", source(renameTo), target(compressedName), deleteSource);
}
+ },
+ ZSTD(".zst") {
+ @Override
+ Action createCompressAction(final String renameTo, final String compressedName, final boolean deleteSource,
+ final int compressionLevel) {
+ // One of "gz", "bzip2", "xz", "zstd", "pack200", or "deflate".
+ return new CommonsCompressAction("zstd", source(renameTo), target(compressedName), deleteSource);
+ }
};
public static FileExtension lookup(final String fileExtension) {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/CommonsCompressAction.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/CommonsCompressAction.java
index 675bed0a027..f74402fa751 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/CommonsCompressAction.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/action/CommonsCompressAction.java
@@ -36,7 +36,7 @@ public final class CommonsCompressAction extends AbstractAction {
private static final int BUF_SIZE = 8192;
/**
- * Compressor name. One of "gz", "bzip2", "xz", "pack200" or "deflate".
+ * Compressor name. One of "gz", "bzip2", "xz", "zstd", "pack200" or "deflate".
*/
private final String name;
@@ -58,7 +58,7 @@ public final class CommonsCompressAction extends AbstractAction {
/**
* Creates new instance of Bzip2CompressAction.
*
- * @param name the compressor name. One of "gz", "bzip2", "xz", "pack200", or "deflate".
+ * @param name the compressor name. One of "gz", "bzip2", "xz", "zstd", "pack200", or "deflate".
* @param source file to compress, may not be null.
* @param destination compressed file, may not be null.
* @param deleteSource if true, attempt to delete file on completion. Failure to delete does not cause an exception
@@ -88,7 +88,7 @@ public boolean execute() throws IOException {
/**
* Compresses a file.
*
- * @param name the compressor name, i.e. "gz", "bzip2", "xz", "pack200", or "deflate".
+ * @param name the compressor name, i.e. "gz", "bzip2", "xz", "zstd", "pack200", or "deflate".
* @param source file to compress, may not be null.
* @param destination compressed file, may not be null.
* @param deleteSource if true, attempt to delete file on completion. Failure to delete does not cause an exception
From b69420a610ee2c0a554b4a6aa5900268681f8d7f Mon Sep 17 00:00:00 2001
From: Anurag Agarwal
Date: Wed, 14 Jun 2023 14:37:32 +0530
Subject: [PATCH 2/4] Updates documentation
---
src/site/xdoc/manual/appenders.xml | 10 +++++++---
src/site/xdoc/runtime-dependencies.xml | 4 +++-
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/site/xdoc/manual/appenders.xml b/src/site/xdoc/manual/appenders.xml
index 51221220589..e80cc0a4fc2 100644
--- a/src/site/xdoc/manual/appenders.xml
+++ b/src/site/xdoc/manual/appenders.xml
@@ -3322,10 +3322,14 @@ public class JpaLogEntity extends AbstractLogEventWrapperEntity {
is present it will be replaced with the current date and time values. If the pattern contains an integer
it will be incremented on each rollover. If the pattern contains both a date/time and integer
in the pattern the integer will be incremented until the result of the date/time pattern changes. If
- the file pattern ends with ".gz", ".zip", ".bz2", ".deflate", ".pack200", or ".xz" the resulting archive
+ the file pattern ends with ".gz", ".zip", ".bz2", ".deflate", ".pack200", "zstd" 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.
+ Pack200, ZSTD and XZ require Apache Commons Compress.
+ In addition:
+