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
diff --git a/Documentation/config-gerrit.txt b/Documentation/config-gerrit.txt
index 0581f19..1e68b04 100644
--- a/Documentation/config-gerrit.txt
+++ b/Documentation/config-gerrit.txt
@@ -3385,6 +3385,13 @@
 +
 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
 
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java
index 853a43f..8d04be8 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/LogFileCompressor.java
@@ -20,6 +20,7 @@
 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.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 @@
   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();