ソースを参照

allow configuration of custom logback configuration via -Dlogback.configurationFile vm arg

Sebastian Stenzel 6 年 前
コミット
3e3a4ceefc

+ 8 - 0
main/commons/src/main/java/org/cryptomator/common/Environment.java

@@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Optional;
@@ -27,6 +28,9 @@ public class Environment {
 
 	@Inject
 	public Environment() {
+		LOG.debug("user.language: {}", System.getProperty("user.language"));
+		LOG.debug("user.region: {}", System.getProperty("user.region"));
+		LOG.debug("logback.configurationFile: {}", System.getProperty("logback.configurationFile"));
 		LOG.debug("cryptomator.settingsPath: {}", System.getProperty("cryptomator.settingsPath"));
 		LOG.debug("cryptomator.ipcPortPath: {}", System.getProperty("cryptomator.ipcPortPath"));
 		LOG.debug("cryptomator.keychainPath: {}", System.getProperty("cryptomator.keychainPath"));
@@ -34,6 +38,10 @@ public class Environment {
 		LOG.debug("cryptomator.mountPointsDir: {}", System.getProperty("cryptomator.mountPointsDir"));
 	}
 
+	public boolean useCustomLogbackConfig() {
+		return getPath("logback.configurationFile").map(Files::exists).orElse(false);
+	}
+
 	public Stream<Path> getSettingsPath() {
 		return getPaths("cryptomator.settingsPath");
 	}

+ 28 - 20
main/launcher/src/main/java/org/cryptomator/logging/LoggerModule.java

@@ -120,29 +120,37 @@ public class LoggerModule {
 	@Singleton
 	@Named("initLogging")
 	Runnable provideLogbackInitializer(LoggerContext context, //
-										 @Named("stdoutAppender") Appender<ILoggingEvent> stdout, //
-										 @Named("upgradeAppender") Appender<ILoggingEvent> upgrade, //
-										 @Named("fileAppender") Appender<ILoggingEvent> file) {
-		return () -> {
-			context.reset();
+									   Environment environment, //
+									   @Named("stdoutAppender") Appender<ILoggingEvent> stdout, //
+									   @Named("upgradeAppender") Appender<ILoggingEvent> upgrade, //
+									   @Named("fileAppender") Appender<ILoggingEvent> file) {
+		if (environment.useCustomLogbackConfig()) {
+			return () -> {
+				Logger root = context.getLogger(Logger.ROOT_LOGGER_NAME);
+				root.info("Using external logback configuration file.");
+			};
+		} else {
+			return () -> {
+				context.reset();
 
-			// configure root logger:
-			Logger root = context.getLogger(Logger.ROOT_LOGGER_NAME);
-			root.setLevel(ROOT_LOG_LEVEL);
-			root.addAppender(stdout);
-			root.addAppender(file);
+				// configure root logger:
+				Logger root = context.getLogger(Logger.ROOT_LOGGER_NAME);
+				root.setLevel(ROOT_LOG_LEVEL);
+				root.addAppender(stdout);
+				root.addAppender(file);
 
-			// configure root logger:
-			Logger uprades = context.getLogger("org.cryptomator.ui.model");
-			uprades.setLevel(Level.DEBUG);
-			uprades.addAppender(stdout);
-			uprades.addAppender(upgrade);
+				// configure root logger:
+				Logger uprades = context.getLogger("org.cryptomator.ui.model");
+				uprades.setLevel(Level.DEBUG);
+				uprades.addAppender(stdout);
+				uprades.addAppender(upgrade);
 
-			// add shutdown hook
-			DelayingShutdownHook shutdownHook = new DelayingShutdownHook();
-			shutdownHook.setContext(context);
-			shutdownHook.setDelay(Duration.buildByMilliseconds(SHUTDOWN_DELAY_MS));
-		};
+				// add shutdown hook
+				DelayingShutdownHook shutdownHook = new DelayingShutdownHook();
+				shutdownHook.setContext(context);
+				shutdownHook.setDelay(Duration.buildByMilliseconds(SHUTDOWN_DELAY_MS));
+			};
+		}
 	}