From 38c6bce2c0f916c53978632e75cca0e301f1bcc2 Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Sat, 9 Jun 2018 17:37:43 +0800 Subject: [PATCH] Change log folder to ~/.hmcl --- .../java/org/jackhuang/hmcl/Launcher.java | 25 ++++++------------- .../hmcl/upgrade/AppDataUpgrader.java | 4 +-- .../java/org/jackhuang/hmcl/util/Logging.java | 5 ++-- .../jackhuang/hmcl/util/OperatingSystem.java | 15 +++++++++++ 4 files changed, 27 insertions(+), 22 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java index 69df97a21..a78d93358 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Launcher.java @@ -71,8 +71,11 @@ public final class Launcher extends Application { public static void main(String[] args) { Thread.setDefaultUncaughtExceptionHandler(CRASH_REPORTER); + if (!LOG_DIRECTORY.mkdirs()) + System.out.println("Unable to create log directory " + LOG_DIRECTORY + ", log files cannot be generated."); + try { - Logging.start(); + Logging.start(LOG_DIRECTORY); // NetworkUtils.setUserAgentSupplier(() -> "Hello Minecraft! Launcher"); Constants.UI_THREAD_SCHEDULER = Constants.JAVAFX_UI_THREAD_SCHEDULER; @@ -113,21 +116,6 @@ public final class Launcher extends Application { }); } - public static File getWorkingDirectory(String folder) { - String home = System.getProperty("user.home", "."); - switch (OperatingSystem.CURRENT_OS) { - case LINUX: - return new File(home, "." + folder + "/"); - case WINDOWS: - String appdata = System.getenv("APPDATA"); - return new File(Lang.nonNull(appdata, home), "." + folder + "/"); - case OSX: - return new File(home, "Library/Application Support/" + folder); - default: - return new File(home, folder + "/"); - } - } - public static List getCurrentJarFiles() { List result = new LinkedList<>(); if (Launcher.class.getClassLoader() instanceof URLClassLoader) { @@ -160,8 +148,9 @@ public final class Launcher extends Application { return String.format(i18n(key), formatArgs); } - public static final File MINECRAFT_DIRECTORY = getWorkingDirectory("minecraft"); - public static final File HMCL_DIRECTORY = getWorkingDirectory("hmcl"); + public static final File MINECRAFT_DIRECTORY = OperatingSystem.getWorkingDirectory("minecraft"); + public static final File HMCL_DIRECTORY = OperatingSystem.getWorkingDirectory("hmcl"); + public static final File LOG_DIRECTORY = new File(Launcher.HMCL_DIRECTORY, "logs"); public static final String VERSION = "@HELLO_MINECRAFT_LAUNCHER_VERSION_FOR_GRADLE_REPLACING@"; public static final String NAME = "HMCL"; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java index d713536c2..3b15ff533 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/AppDataUpgrader.java @@ -67,7 +67,7 @@ public class AppDataUpgrader extends IUpgrader { return null; }); } finally { - Logging.start(); + Logging.start(Launcher.LOG_DIRECTORY); Thread.currentThread().setContextClassLoader(pre); } return true; @@ -218,7 +218,7 @@ public class AppDataUpgrader extends IUpgrader { public static class AppDataUpgraderJarTask extends Task { - public static final File BASE_FOLDER = Launcher.getWorkingDirectory("hmcl"); + public static final File BASE_FOLDER = OperatingSystem.getWorkingDirectory("hmcl"); public static final File HMCL_VER_FILE = new File(BASE_FOLDER, "hmclver.json"); public static File getSelf(String ver) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Logging.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Logging.java index 26b88cac9..48aaa276f 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Logging.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Logging.java @@ -18,6 +18,7 @@ package org.jackhuang.hmcl.util; import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; @@ -37,12 +38,12 @@ public final class Logging { LOG = Logger.getLogger("HMCL"); } - public static void start() { + public static void start(File logFolder) { LOG.setLevel(Level.FINER); LOG.setUseParentHandlers(false); try { - FileHandler fileHandler = new FileHandler("hmcl.log"); + FileHandler fileHandler = new FileHandler(new File(logFolder, "hmcl.log").getAbsolutePath()); fileHandler.setLevel(Level.FINEST); fileHandler.setFormatter(DefaultFormatter.INSTANCE); LOG.addHandler(fileHandler); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/OperatingSystem.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/OperatingSystem.java index 045c93cae..2d048f3e3 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/OperatingSystem.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/OperatingSystem.java @@ -143,4 +143,19 @@ public enum OperatingSystem { System.runFinalization(); System.gc(); } + + public static File getWorkingDirectory(String folder) { + String home = System.getProperty("user.home", "."); + switch (OperatingSystem.CURRENT_OS) { + case LINUX: + return new File(home, "." + folder + "/"); + case WINDOWS: + String appdata = System.getenv("APPDATA"); + return new File(Lang.nonNull(appdata, home), "." + folder + "/"); + case OSX: + return new File(home, "Library/Application Support/" + folder); + default: + return new File(home, folder + "/"); + } + } }