Armin Schrenk 4 vuotta sitten
vanhempi
commit
d80605532f

+ 30 - 0
main/launcher/src/main/java/org/cryptomator/logging/LaunchAndSizeBasedTriggerinPolicy.java

@@ -0,0 +1,30 @@
+package org.cryptomator.logging;
+
+import ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy;
+import ch.qos.logback.core.rolling.TriggeringPolicyBase;
+import ch.qos.logback.core.util.FileSize;
+
+import java.io.File;
+
+/**
+ * Triggers a roll-over either on the first log event or if watched log file reaches a certain size
+ *
+ * @param <E> Event type the policy possibly reacts to
+ */
+public class LaunchAndSizeBasedTriggerinPolicy<E> extends TriggeringPolicyBase<E> {
+
+	LaunchBasedTriggeringPolicy<E> launchBasedTriggeringPolicy;
+	SizeBasedTriggeringPolicy<E> sizeBasedTriggeringPolicy;
+
+	public LaunchAndSizeBasedTriggerinPolicy(FileSize threshold) {
+		this.launchBasedTriggeringPolicy = new LaunchBasedTriggeringPolicy<>();
+		this.sizeBasedTriggeringPolicy = new SizeBasedTriggeringPolicy<>();
+		sizeBasedTriggeringPolicy.setMaxFileSize(threshold);
+	}
+
+	@Override
+	public boolean isTriggeringEvent(File activeFile, E event) {
+		return launchBasedTriggeringPolicy.isTriggeringEvent(activeFile, event) || sizeBasedTriggeringPolicy.isTriggeringEvent(activeFile, event);
+	}
+
+}

+ 4 - 3
main/launcher/src/main/java/org/cryptomator/logging/LoggerModule.java

@@ -9,10 +9,9 @@ import ch.qos.logback.core.Appender;
 import ch.qos.logback.core.ConsoleAppender;
 import ch.qos.logback.core.FileAppender;
 import ch.qos.logback.core.helpers.NOPAppender;
-import ch.qos.logback.core.hook.DelayingShutdownHook;
 import ch.qos.logback.core.rolling.FixedWindowRollingPolicy;
 import ch.qos.logback.core.rolling.RollingFileAppender;
-import ch.qos.logback.core.util.Duration;
+import ch.qos.logback.core.util.FileSize;
 import dagger.Module;
 import dagger.Provides;
 import org.cryptomator.common.Environment;
@@ -33,6 +32,8 @@ public class LoggerModule {
 	private static final int LOGFILE_ROLLING_MIN = 1;
 	private static final int LOGFILE_ROLLING_MAX = 9;
 	private static final String LOG_PATTERN = "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n";
+	private static final String LOG_MAX_SIZE = "100mb";
+
 	static final Map<String, Level> DEFAULT_LOG_LEVELS = Map.of( //
 			Logger.ROOT_LOGGER_NAME, Level.INFO, //
 			"org.cryptomator", Level.INFO //
@@ -84,7 +85,7 @@ public class LoggerModule {
 			appender.setContext(context);
 			appender.setFile(logDir.resolve(LOGFILE_NAME).toString());
 			appender.setEncoder(encoder);
-			LaunchBasedTriggeringPolicy triggeringPolicy = new LaunchBasedTriggeringPolicy();
+			LaunchAndSizeBasedTriggerinPolicy triggeringPolicy = new LaunchAndSizeBasedTriggerinPolicy(FileSize.valueOf(LOG_MAX_SIZE));
 			triggeringPolicy.setContext(context);
 			triggeringPolicy.start();
 			appender.setTriggeringPolicy(triggeringPolicy);