From eba0990538b505ea30ad293f44fc14243b35db62 Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Thu, 1 Mar 2018 01:02:05 +0800 Subject: [PATCH] Collect log when launcher crashed --- .../org/jackhuang/hmcl/util/CrashReporter.java | 1 + .../java/org/jackhuang/hmcl/util/Logging.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/util/CrashReporter.java b/HMCL/src/main/java/org/jackhuang/hmcl/util/CrashReporter.java index a42ddce13..6072fd5c2 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/util/CrashReporter.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/util/CrashReporter.java @@ -111,6 +111,7 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler { HashMap map = new HashMap<>(); map.put("crash_report", text); map.put("version", Launcher.VERSION); + map.put("log", Logging.getLogs()); try { String response = NetworkUtils.doPost(NetworkUtils.toURL("http://huangyuhui.duapp.com/hmcl/crash.php"), map); if (StringUtils.isNotBlank(response)) 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 3776040e9..aecb4eec7 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Logging.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/Logging.java @@ -32,6 +32,7 @@ import java.util.logging.*; public final class Logging { public static final Logger LOG; + private static final ByteArrayOutputStream OUTPUT_STREAM = new ByteArrayOutputStream(); static { LOG = Logger.getLogger("HMCL"); @@ -51,6 +52,20 @@ public final class Logging { consoleHandler.setLevel(Level.FINER); consoleHandler.setFormatter(DefaultFormatter.INSTANCE); LOG.addHandler(consoleHandler); + + StreamHandler streamHandler = new StreamHandler(OUTPUT_STREAM, DefaultFormatter.INSTANCE) { + @Override + public synchronized void publish(LogRecord record) { + super.publish(record); + flush(); + } + }; + streamHandler.setLevel(Level.FINEST); + LOG.addHandler(streamHandler); + } + + public static String getLogs() { + return OUTPUT_STREAM.toString(); } static final class DefaultFormatter extends Formatter {