Allow to disable log file compression

On sites where log file compression is done by an external service
such as logrotate [1], administrators may wish to disable Gerrit's
default log compression.

Add a new setting, log.compress, which disables log compression when
set to false. The default is true, for backwards compatibility with
current behaviour.

[1] http://manpages.ubuntu.com/manpages/zesty/man8/logrotate.8.html

Change-Id: I3ceb152ef61e711b2e73d01a05b8f7ceecd395b6
This commit is contained in:
David Pursehouse
2017-11-21 21:27:17 +09:00
parent ef4d7d3e45
commit 2281fefeae
2 changed files with 15 additions and 1 deletions

View File

@@ -3349,6 +3349,13 @@ if `jsonLogging` is enabled.
+
Defaults to true.
[[log.compress]]log.compress::
+
If set to true, log files are compressed at server startup and then daily at 11pm
(in the server's local time zone).
+
Defaults to true.
[[mimetype]]
=== Section mimetype

View File

@@ -20,6 +20,7 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
import com.google.common.io.ByteStreams;
import com.google.gerrit.extensions.events.LifecycleListener;
import com.google.gerrit.lifecycle.LifecycleModule;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.SitePaths;
import com.google.gerrit.server.git.WorkQueue;
import com.google.inject.Inject;
@@ -34,6 +35,7 @@ import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.concurrent.Future;
import java.util.zip.GZIPOutputStream;
import org.eclipse.jgit.lib.Config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -51,15 +53,20 @@ public class LogFileCompressor implements Runnable {
static class Lifecycle implements LifecycleListener {
private final WorkQueue queue;
private final LogFileCompressor compressor;
private final boolean enabled;
@Inject
Lifecycle(WorkQueue queue, LogFileCompressor compressor) {
Lifecycle(WorkQueue queue, LogFileCompressor compressor, @GerritServerConfig Config config) {
this.queue = queue;
this.compressor = compressor;
this.enabled = config.getBoolean("log", "compress", true);
}
@Override
public void start() {
if (!enabled) {
return;
}
//compress log once and then schedule compression every day at 11:00pm
queue.getDefaultQueue().execute(compressor);
ZoneId zone = ZoneId.systemDefault();