Allow to disable log file rotation
On sites where log file rotation is done by an external service such as logrotate [1], administrators may wish to disable Gerrit's default log rotation. Add a new setting, log.rotate, which disables log rotation 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: I76ebf086929fae7dd528e48385265722332dec0a
This commit is contained in:
@@ -27,6 +27,7 @@ import java.nio.file.Path;
|
||||
import org.apache.log4j.Appender;
|
||||
import org.apache.log4j.AsyncAppender;
|
||||
import org.apache.log4j.DailyRollingFileAppender;
|
||||
import org.apache.log4j.FileAppender;
|
||||
import org.apache.log4j.Layout;
|
||||
import org.apache.log4j.LogManager;
|
||||
import org.apache.log4j.Logger;
|
||||
@@ -44,19 +45,21 @@ public class SystemLog {
|
||||
|
||||
private final SitePaths site;
|
||||
private final int asyncLoggingBufferSize;
|
||||
private final boolean rotateLogs;
|
||||
|
||||
@Inject
|
||||
public SystemLog(SitePaths site, @GerritServerConfig Config config) {
|
||||
this.site = site;
|
||||
this.asyncLoggingBufferSize = config.getInt("core", "asyncLoggingBufferSize", 64);
|
||||
this.rotateLogs = config.getBoolean("log", "rotate", true);
|
||||
}
|
||||
|
||||
public static boolean shouldConfigure() {
|
||||
return Strings.isNullOrEmpty(System.getProperty(LOG4J_CONFIGURATION));
|
||||
}
|
||||
|
||||
public static Appender createAppender(Path logdir, String name, Layout layout) {
|
||||
final DailyRollingFileAppender dst = new DailyRollingFileAppender();
|
||||
public static Appender createAppender(Path logdir, String name, Layout layout, boolean rotate) {
|
||||
final FileAppender dst = rotate ? new DailyRollingFileAppender() : new FileAppender();
|
||||
dst.setName(name);
|
||||
dst.setLayout(layout);
|
||||
dst.setEncoding(UTF_8.name());
|
||||
@@ -70,6 +73,10 @@ public class SystemLog {
|
||||
}
|
||||
|
||||
public AsyncAppender createAsyncAppender(String name, Layout layout) {
|
||||
return createAsyncAppender(name, layout, rotateLogs);
|
||||
}
|
||||
|
||||
private AsyncAppender createAsyncAppender(String name, Layout layout, boolean rotate) {
|
||||
AsyncAppender async = new AsyncAppender();
|
||||
async.setName(name);
|
||||
async.setBlocking(true);
|
||||
@@ -77,7 +84,7 @@ public class SystemLog {
|
||||
async.setLocationInfo(false);
|
||||
|
||||
if (shouldConfigure()) {
|
||||
async.addAppender(createAppender(site.logs_dir, name, layout));
|
||||
async.addAppender(createAppender(site.logs_dir, name, layout, rotate));
|
||||
} else {
|
||||
Appender appender = LogManager.getLogger(name).getAppender(name);
|
||||
if (appender != null) {
|
||||
|
||||
Reference in New Issue
Block a user