Selaa lähdekoodia

log durations of application start

Sebastian Stenzel 3 vuotta sitten
vanhempi
commit
9c26d17733

+ 4 - 2
src/main/java/org/cryptomator/launcher/Cryptomator.java

@@ -27,9 +27,10 @@ import java.util.concurrent.Executors;
 @Singleton
 public class Cryptomator {
 
+	private static final long STARTUP_TIME = System.currentTimeMillis();
 	// DaggerCryptomatorComponent gets generated by Dagger.
 	// Run Maven and include target/generated-sources/annotations in your IDE.
-	private static final CryptomatorComponent CRYPTOMATOR_COMPONENT = DaggerCryptomatorComponent.create();
+	private static final CryptomatorComponent CRYPTOMATOR_COMPONENT = DaggerCryptomatorComponent.factory().create(STARTUP_TIME);
 	private static final Logger LOG = LoggerFactory.getLogger(Cryptomator.class);
 
 	private final LoggerConfiguration logConfig;
@@ -63,6 +64,7 @@ public class Cryptomator {
 	 */
 	private int run(String[] args) {
 		logConfig.init();
+		LOG.debug("Dagger graph initialized after {}ms", System.currentTimeMillis() - STARTUP_TIME);
 		LOG.info("Starting Cryptomator {} on {} {} ({})", env.getAppVersion().orElse("SNAPSHOT"), SystemUtils.OS_NAME, SystemUtils.OS_VERSION, SystemUtils.OS_ARCH);
 		debugMode.initialize();
 		supportedLanguages.applyPreferred();
@@ -112,7 +114,7 @@ public class Cryptomator {
 
 		@Override
 		public void start(Stage primaryStage) {
-			LOG.info("JavaFX application started.");
+			LOG.info("JavaFX runtime started after {}ms", System.currentTimeMillis() - STARTUP_TIME);
 			FxApplicationComponent component = CRYPTOMATOR_COMPONENT.fxAppComponentBuilder() //
 					.fxApplication(this) //
 					.primaryStage(primaryStage) //

+ 7 - 0
src/main/java/org/cryptomator/launcher/CryptomatorComponent.java

@@ -1,10 +1,12 @@
 package org.cryptomator.launcher;
 
+import dagger.BindsInstance;
 import dagger.Component;
 import org.cryptomator.common.CommonsModule;
 import org.cryptomator.logging.LoggerModule;
 import org.cryptomator.ui.fxapp.FxApplicationComponent;
 
+import javax.inject.Named;
 import javax.inject.Singleton;
 
 @Singleton
@@ -15,4 +17,9 @@ public interface CryptomatorComponent {
 
 	FxApplicationComponent.Builder fxAppComponentBuilder();
 
+	@Component.Factory
+	interface Factory {
+		CryptomatorComponent create(@BindsInstance @Named("startupTime") long startupTime);
+	}
+
 }

+ 7 - 1
src/main/java/org/cryptomator/ui/fxapp/FxApplication.java

@@ -7,16 +7,20 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.inject.Inject;
+import javax.inject.Named;
 import javafx.application.Platform;
 import javafx.stage.Stage;
 import javafx.stage.StageStyle;
 import java.awt.SystemTray;
+import java.io.IOException;
+import java.io.UncheckedIOException;
 
 @FxApplicationScoped
 public class FxApplication {
 
 	private static final Logger LOG = LoggerFactory.getLogger(FxApplication.class);
 
+	private final long startupTime;
 	private final Settings settings;
 	private final AppLaunchEventHandler launchEventHandler;
 	private final Lazy<TrayMenuComponent> trayMenu;
@@ -26,7 +30,8 @@ public class FxApplication {
 	private final AutoUnlocker autoUnlocker;
 
 	@Inject
-	FxApplication(Settings settings, AppLaunchEventHandler launchEventHandler, Lazy<TrayMenuComponent> trayMenu, FxApplicationWindows appWindows, FxApplicationStyle applicationStyle, FxApplicationTerminator applicationTerminator, AutoUnlocker autoUnlocker) {
+	FxApplication(@Named("startupTime") long startupTime, Settings settings, AppLaunchEventHandler launchEventHandler, Lazy<TrayMenuComponent> trayMenu, FxApplicationWindows appWindows, FxApplicationStyle applicationStyle, FxApplicationTerminator applicationTerminator, AutoUnlocker autoUnlocker) {
+		this.startupTime = startupTime;
 		this.settings = settings;
 		this.launchEventHandler = launchEventHandler;
 		this.trayMenu = trayMenu;
@@ -61,6 +66,7 @@ public class FxApplication {
 					stage.setIconified(true);
 				}
 			}
+			LOG.debug("Main window initialized after {}ms", System.currentTimeMillis() - startupTime);
 		}).exceptionally(error -> {
 			LOG.error("Failed to show main window", error);
 			return null;