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 <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2018-02-12 11:04:58 +01:00
committed by Adam
parent f50c657122
commit 8a9523ec5a
3 changed files with 94 additions and 5 deletions

View File

@@ -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();
}