mirror of
https://github.com/traccar/traccar.git
synced 2025-01-09 04:07:38 +08:00
Merge pull request #5021 from Snowbridge/master
New config parameter logger.rotate.interval
This commit is contained in:
commit
7d1a4120eb
@ -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.
|
||||
*/
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user