From 8a9523ec5a4e7c2120b3266da7a805d8d7eb2dc7 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Mon, 12 Feb 2018 11:04:58 +0100 Subject: [PATCH] Add logback logger that will log to file Add dependency on logback and configure logger to log to ~/.runelite/logs/application.log with rolling file appender, that means every 10MB file will be rolled and also every day file will be rolled with maximum history of 30 days, to not flood user's system space. Add new console parameter -debug, because logback properties cannot be set from console like slf4j-simple ones, so it needs to be done in a bit more complicated way. Signed-off-by: Tomas Slusny --- runelite-client/pom.xml | 14 ++-- .../java/net/runelite/client/RuneLite.java | 17 ++++- .../src/main/resources/logback.xml | 68 +++++++++++++++++++ 3 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 runelite-client/src/main/resources/logback.xml diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index 2e3125fe5b..86a69d5a82 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -38,6 +38,7 @@ 1.7.12 + 1.2.3 4.1.0 true @@ -50,10 +51,9 @@ ${slf4j.version} - org.slf4j - slf4j-simple - ${slf4j.version} - runtime + ch.qos.logback + logback-classic + ${logback.version} net.sf.jopt-simple @@ -215,6 +215,12 @@ ** + + ch.qos.logback:* + + ** + + diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLite.java b/runelite-client/src/main/java/net/runelite/client/RuneLite.java index ff86d850e2..53a011be58 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -24,6 +24,8 @@ */ package net.runelite.client; +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; import com.google.common.annotations.VisibleForTesting; import com.google.common.eventbus.EventBus; import com.google.inject.Guice; @@ -48,6 +50,8 @@ import net.runelite.client.menus.MenuManager; import net.runelite.client.plugins.PluginManager; import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.overlay.OverlayRenderer; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; @Singleton @Slf4j @@ -56,6 +60,8 @@ public class RuneLite public static final File RUNELITE_DIR = new File(System.getProperty("user.home"), ".runelite"); public static final File PROFILES_DIR = new File(RUNELITE_DIR, "profiles"); public static final File SCREENSHOT_DIR = new File(RUNELITE_DIR, "screenshots"); + private static final File LOGS_DIR = new File(RUNELITE_DIR, "logs"); + private static final File LOGS_FILE_NAME = new File(LOGS_DIR, "application"); private static Injector injector; private static OptionSet options; @@ -96,14 +102,23 @@ public class RuneLite public static void main(String[] args) throws Exception { - OptionParser parser = new OptionParser(); parser.accepts("developer-mode"); parser.accepts("no-rs"); + parser.accepts("debug"); setOptions(parser.parse(args)); PROFILES_DIR.mkdirs(); + // Setup logger + MDC.put("logFileName", LOGS_FILE_NAME.getAbsolutePath()); + + if (options.has("debug")) + { + final Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + logger.setLevel(Level.DEBUG); + } + setInjector(Guice.createInjector(new RuneLiteModule())); injector.getInstance(RuneLite.class).start(); } diff --git a/runelite-client/src/main/resources/logback.xml b/runelite-client/src/main/resources/logback.xml new file mode 100644 index 0000000000..4bafcd0e5c --- /dev/null +++ b/runelite-client/src/main/resources/logback.xml @@ -0,0 +1,68 @@ + + + + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + + + + logFileName + ${user.home}/.runelite/logs/application + + + + + ${logFileName}.log + + + + ${logFileName}_%d{yyyy-MM-dd}.%i.log + + + + 10MB + + + + 30 + + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + \ No newline at end of file