Merge pull request #5021 from Snowbridge/master

New config parameter logger.rotate.interval
This commit is contained in:
Anton Tananaev 2023-01-26 09:39:49 -08:00 committed by GitHub
commit 7d1a4120eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 7 deletions

View File

@ -1574,6 +1574,16 @@ public final class Keys {
"logger.rotate",
List.of(KeyType.CONFIG));
/**
* Log file rotation interval, the default rotation interval is once a day.
* This option is ignored if 'logger.rotate' = false
* Available options: day, hour
*/
public static final ConfigKey<String> LOGGER_ROTATE_INTERVAL = new StringConfigKey(
"logger.rotate.interval",
List.of(KeyType.CONFIG),
"day");
/**
* A list of position attributes to log.
*/

View File

@ -55,10 +55,12 @@ public final class Log {
private String suffix;
private Writer writer;
private final boolean rotate;
private final String template;
RollingFileHandler(String name, boolean rotate) {
RollingFileHandler(String name, boolean rotate, String rotateInterval) {
this.name = name;
this.rotate = rotate;
this.template = rotateInterval.equalsIgnoreCase("HOUR") ? "yyyyMMddHH" : "yyyyMMdd";
}
@Override
@ -67,7 +69,7 @@ public final class Log {
try {
String suffix = "";
if (rotate) {
suffix = new SimpleDateFormat("yyyyMMdd").format(new Date(record.getMillis()));
suffix = new SimpleDateFormat(template).format(new Date(record.getMillis()));
if (writer != null && !suffix.equals(this.suffix)) {
writer.close();
writer = null;
@ -169,7 +171,7 @@ public final class Log {
public static void setupDefaultLogger() {
String path = null;
URL url = ClassLoader.getSystemClassLoader().getResource(".");
URL url = ClassLoader.getSystemClassLoader().getResource(".");
if (url != null) {
File jarPath = new File(url.getPath());
File logsPath = new File(jarPath, "logs");
@ -178,7 +180,7 @@ public final class Log {
}
path = new File(logsPath, "tracker-server.log").getPath();
}
setupLogger(path == null, path, Level.WARNING.getName(), false, true);
setupLogger(path == null, path, Level.WARNING.getName(), false, true, "DAY");
}
public static void setupLogger(Config config) {
@ -187,11 +189,13 @@ public final class Log {
config.getString(Keys.LOGGER_FILE),
config.getString(Keys.LOGGER_LEVEL),
config.getBoolean(Keys.LOGGER_FULL_STACK_TRACES),
config.getBoolean(Keys.LOGGER_ROTATE));
config.getBoolean(Keys.LOGGER_ROTATE),
config.getString(Keys.LOGGER_ROTATE_INTERVAL));
}
private static void setupLogger(
boolean console, String file, String levelString, boolean fullStackTraces, boolean rotate) {
boolean console, String file, String levelString,
boolean fullStackTraces, boolean rotate, String rotateInterval) {
Logger rootLogger = Logger.getLogger("");
for (Handler handler : rootLogger.getHandlers()) {
@ -202,7 +206,7 @@ public final class Log {
if (console) {
handler = new ConsoleHandler();
} else {
handler = new RollingFileHandler(file, rotate);
handler = new RollingFileHandler(file, rotate, rotateInterval);
}
handler.setFormatter(new LogFormatter(fullStackTraces));