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