Skip internal logging conf when external one was provided

Gerrit's internal error and gc logging configuration was overriding
log4j configuration provided by -Dlog4j.configuration parameter. Now
when such parameter is present Gerrit will not call internal log
configuration but will relay on external one.

Change-Id: I8c808d6d4eee93480bcda138ed305288f5baaa39
Signed-off-by: Dariusz Luksza <dariusz@luksza.org>
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/ErrorLogFile.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/ErrorLogFile.java
index 68762bb..dc0cb95 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/ErrorLogFile.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/ErrorLogFile.java
@@ -14,6 +14,7 @@
 
 package com.google.gerrit.pgm.util;
 
+import com.google.common.base.Strings;
 import com.google.gerrit.extensions.events.LifecycleListener;
 import com.google.gerrit.server.config.SitePaths;
 
@@ -33,6 +34,7 @@
 import java.io.IOException;
 
 public class ErrorLogFile {
+  private static final String LOG4J_CONFIGURATION = "log4j.configuration";
   static final String LOG_NAME = "error_log";
 
   public static void errorOnlyConsole() {
@@ -57,7 +59,27 @@
     if (!logdir.exists() && !logdir.mkdirs()) {
       throw new Die("Cannot create log directory: " + logdir);
     }
+    if (shouldConfigureLogSystem()) {
+      initLogSystem(logdir);
+    }
 
+    return new LifecycleListener() {
+      @Override
+      public void start() {
+      }
+
+      @Override
+      public void stop() {
+        LogManager.shutdown();
+      }
+    };
+  }
+
+  public static boolean shouldConfigureLogSystem() {
+    return Strings.isNullOrEmpty(System.getProperty(LOG4J_CONFIGURATION));
+  }
+
+  private static void initLogSystem(final File logdir) {
     final PatternLayout layout = new PatternLayout();
     layout.setConversionPattern("[%d] %-5p %c %x: %m%n");
 
@@ -76,17 +98,6 @@
     final Logger root = LogManager.getRootLogger();
     root.removeAllAppenders();
     root.addAppender(dst);
-
-    return new LifecycleListener() {
-      @Override
-      public void start() {
-      }
-
-      @Override
-      public void stop() {
-        LogManager.shutdown();
-      }
-    };
   }
 
   private static File resolve(final File logs_dir) {
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/GarbageCollectionLogFile.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/GarbageCollectionLogFile.java
index 95e5763..b34bb21 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/GarbageCollectionLogFile.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/util/GarbageCollectionLogFile.java
@@ -42,7 +42,23 @@
     if (!logdir.exists() && !logdir.mkdirs()) {
       throw new Die("Cannot create log directory: " + logdir);
     }
+    if (ErrorLogFile.shouldConfigureLogSystem()) {
+      initLogSystem(logdir);
+    }
 
+    return new LifecycleListener() {
+      @Override
+      public void start() {
+      }
+
+      @Override
+      public void stop() {
+        LogManager.getLogger(GarbageCollection.LOG_NAME).removeAllAppenders();
+      }
+    };
+  }
+
+  private static void initLogSystem(File logdir) {
     PatternLayout layout = new PatternLayout();
     layout.setConversionPattern("[%d] %-5p %x: %m%n");
 
@@ -62,17 +78,6 @@
     gcLogger.removeAllAppenders();
     gcLogger.addAppender(dst);
     gcLogger.setAdditivity(false);
-
-    return new LifecycleListener() {
-      @Override
-      public void start() {
-      }
-
-      @Override
-      public void stop() {
-        LogManager.getLogger(GarbageCollection.LOG_NAME).removeAllAppenders();
-      }
-    };
   }
 
   private static File resolve(File logs_dir) {