diff --git a/src/main/java/net/technicpack/launcher/LauncherMain.java b/src/main/java/net/technicpack/launcher/LauncherMain.java index 971a00eda..da70c057e 100644 --- a/src/main/java/net/technicpack/launcher/LauncherMain.java +++ b/src/main/java/net/technicpack/launcher/LauncherMain.java @@ -41,7 +41,6 @@ import net.technicpack.launcher.ui.components.discover.DiscoverInfoPanel; import net.technicpack.launcher.ui.components.modpacks.ModpackSelector; import net.technicpack.launchercore.TechnicConstants; -import net.technicpack.launchercore.auth.IUserStore; import net.technicpack.launchercore.auth.IUserType; import net.technicpack.launchercore.auth.UserModel; import net.technicpack.launchercore.exception.DownloadException; @@ -136,6 +135,7 @@ public class LauncherMain { }; private static IBuildNumber buildNumber; + private static RotatingFileHandler currentFileHandler; public static void main(String[] argv) { try { @@ -218,19 +218,13 @@ public static void main(String[] argv) { private static void setupLogging(LauncherDirectories directories, ResourceLoader resources) { System.out.println("Setting up logging"); final Logger logger = Utils.getLogger(); - File logDirectory = new File(directories.getLauncherDirectory(), "logs"); - if (!logDirectory.exists()) { - logDirectory.mkdir(); - } - File logs = new File(logDirectory, "techniclauncher_%D.log"); - RotatingFileHandler fileHandler = new RotatingFileHandler(logs.getPath()); - - fileHandler.setFormatter(new BuildLogFormatter(buildNumber.getBuildNumber())); + setupLogFile(directories); for (Handler h : logger.getHandlers()) { - logger.removeHandler(h); + if(h != currentFileHandler) { + logger.removeHandler(h); + } } - logger.addHandler(fileHandler); logger.setUseParentHandlers(false); LauncherMain.consoleFrame = new ConsoleFrame(2500, resources.getImage("icon.png")); @@ -247,6 +241,29 @@ private static void setupLogging(LauncherDirectories directories, ResourceLoader }); } + public static void setupLogFile(LauncherDirectories directories) { + final Logger logger = Utils.getLogger(); + File logDirectory = new File(directories.getLauncherDirectory(), "logs"); + if (!logDirectory.exists()) { + logDirectory.mkdir(); + } + File logs = new File(logDirectory, "techniclauncher_%D.log"); + RotatingFileHandler fileHandler = new RotatingFileHandler(logs.getPath()); + + fileHandler.setFormatter(new BuildLogFormatter(buildNumber.getBuildNumber())); + + logger.addHandler(fileHandler); + if(currentFileHandler != null) { + logger.removeHandler(currentFileHandler); + try { + currentFileHandler.close(); + } catch(SecurityException ex) { + logger.log(Level.WARNING, "Closing old log file failed: ", ex); + } + } + currentFileHandler = fileHandler; + } + private static void runStartupDebug() { // Startup debug messages Utils.getLogger().info("OS: " + System.getProperty("os.name").toLowerCase(Locale.ENGLISH)); diff --git a/src/main/java/net/technicpack/launcher/ui/InstallerFrame.java b/src/main/java/net/technicpack/launcher/ui/InstallerFrame.java index 1138d4db1..0c7693055 100644 --- a/src/main/java/net/technicpack/launcher/ui/InstallerFrame.java +++ b/src/main/java/net/technicpack/launcher/ui/InstallerFrame.java @@ -182,9 +182,11 @@ public void run() { newRoot.mkdirs(); FileUtils.copyDirectory(oldRoot, newRoot); + LauncherMain.setupLogFile(new TechnicLauncherDirectories(newRoot)); + Utils.getLogger().info("Log file location changed"); FileUtils.deleteDirectory(oldRoot); } catch (IOException ex) { - Utils.getLogger().log(Level.SEVERE, "Copying install to new directory failed: ",ex); + Utils.getLogger().log(Level.SEVERE, "Copying install to new directory failed: ", ex); } }