gc_log is no longer overwritten when rotated The two loggers were creating different appenders, interfering with each other. Currently, the `GarbageCollectionRunner.java ` log entry is only written when the log file is rotated. Furthermore it overwrites the extremely valuable output from `GarbageCollection.java`. Bug: Issue 396060191 Release-Notes: gc_log is no longer overwritten when rotated Change-Id: Idafb09802916e4ae4d1a26c8ec9224812d40ea0c
diff --git a/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java b/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java index b711708..19f7965 100644 --- a/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java +++ b/java/com/google/gerrit/server/git/GarbageCollectionLogFile.java
@@ -21,6 +21,7 @@ import com.google.gerrit.server.util.SystemLog; import com.google.inject.Inject; import java.nio.file.Path; +import org.apache.log4j.Appender; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; @@ -46,19 +47,19 @@ } private static void initLogSystem(Path logdir, boolean rotate) { - initGcLogger(logdir, rotate, getLogger(GarbageCollection.class)); - initGcLogger(logdir, rotate, getLogger(GarbageCollectionRunner.class)); + Appender appender = + SystemLog.createAppender(logdir, LOG_NAME, new PatternLayout("[%d] %-5p %x: %m%n"), rotate); + initGcLogger(getLogger(GarbageCollection.class), appender); + initGcLogger(getLogger(GarbageCollectionRunner.class), appender); } private static Logger getLogger(Class<?> clazz) { return LogManager.getLogger(Platform.getBackend(clazz.getName()).getLoggerName()); } - private static void initGcLogger(Path logdir, boolean rotate, Logger gcLogger) { + private static void initGcLogger(Logger gcLogger, Appender appender) { gcLogger.removeAllAppenders(); - gcLogger.addAppender( - SystemLog.createAppender( - logdir, LOG_NAME, new PatternLayout("[%d] %-5p %x: %m%n"), rotate)); + gcLogger.addAppender(appender); gcLogger.setAdditivity(false); } }