From bd3c68131ad2f3c94adb3b11b4c2c7699d644f7b Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Fri, 10 May 2013 10:39:35 -0500 Subject: [PATCH] Removed horrible static initialization of logging system and instead rely on magic - the fact we are using logback classic and the logger is named "buffer". --- .../logging/LogbackBufferLoggerAdaptor.java | 24 ++++++++++++----- .../logging/LoggingSystemSetup.java | 26 ++++++++++--------- .../logging/LogLevelBufferLoggerTest.java | 6 ++--- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/core/src/net/sf/openrocket/logging/LogbackBufferLoggerAdaptor.java b/core/src/net/sf/openrocket/logging/LogbackBufferLoggerAdaptor.java index 8b3bda931..89627a182 100644 --- a/core/src/net/sf/openrocket/logging/LogbackBufferLoggerAdaptor.java +++ b/core/src/net/sf/openrocket/logging/LogbackBufferLoggerAdaptor.java @@ -7,19 +7,31 @@ import ch.qos.logback.core.AppenderBase; public class LogbackBufferLoggerAdaptor extends AppenderBase { - private final LogHelper logHelper; + private final DelegatorLogger logHelper; + private final LogLevelBufferLogger logBuffer; - public LogbackBufferLoggerAdaptor() { - logHelper = LoggingSystemSetup.getInstance(); + private static final int LOG_BUFFER_LENGTH = 50; + + public LogbackBufferLoggerAdaptor(int bufferLength) { + logHelper = new DelegatorLogger(); + logBuffer = new LogLevelBufferLogger(bufferLength); + logHelper.addLogger(logBuffer); } - public LogbackBufferLoggerAdaptor(LogHelper logHelper) { - this.logHelper = logHelper; + public LogbackBufferLoggerAdaptor() { + this(LOG_BUFFER_LENGTH); + } + + DelegatorLogger getLogHelper() { + return logHelper; + } + + LogLevelBufferLogger getLogBuffer() { + return logBuffer; } @Override protected void append(ILoggingEvent e) { - e.getCallerData(); LogLine ll = toLogLine(e); logHelper.log(ll); diff --git a/core/src/net/sf/openrocket/logging/LoggingSystemSetup.java b/core/src/net/sf/openrocket/logging/LoggingSystemSetup.java index b38123881..68edcfdce 100644 --- a/core/src/net/sf/openrocket/logging/LoggingSystemSetup.java +++ b/core/src/net/sf/openrocket/logging/LoggingSystemSetup.java @@ -1,18 +1,16 @@ package net.sf.openrocket.logging; +import org.slf4j.LoggerFactory; + +import ch.qos.logback.classic.Logger; + public class LoggingSystemSetup { - private static final DelegatorLogger delegator = new DelegatorLogger(); - - private static final int LOG_BUFFER_LENGTH = 50; - - private static final LogLevelBufferLogger llbl = new LogLevelBufferLogger(LOG_BUFFER_LENGTH); - - static { - delegator.addLogger(llbl); - - } + // This class is highly dependent on the logback.xml file. + // It assumes logback is the logging backend and that + // there is an appender named "buffer" and that appender + // is the LogbackBufferLoggerAdapter. /** * Get the logger to be used in logging. @@ -20,11 +18,15 @@ public class LoggingSystemSetup { * @return the logger to be used in all logging. */ public static DelegatorLogger getInstance() { - return delegator; + Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + LogbackBufferLoggerAdaptor adapater = (LogbackBufferLoggerAdaptor) logger.getAppender("buffer"); + return adapater.getLogHelper(); } public static LogLevelBufferLogger getBufferLogger() { - return llbl; + Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + LogbackBufferLoggerAdaptor adapater = (LogbackBufferLoggerAdaptor) logger.getAppender("buffer"); + return adapater.getLogBuffer(); } } diff --git a/core/test/net/sf/openrocket/logging/LogLevelBufferLoggerTest.java b/core/test/net/sf/openrocket/logging/LogLevelBufferLoggerTest.java index a2de165ad..cf23ea764 100644 --- a/core/test/net/sf/openrocket/logging/LogLevelBufferLoggerTest.java +++ b/core/test/net/sf/openrocket/logging/LogLevelBufferLoggerTest.java @@ -18,16 +18,13 @@ public class LogLevelBufferLoggerTest { @Test public void testLogger() { - DelegatorLogger l = new DelegatorLogger(); - LogLevelBufferLogger llbl = new LogLevelBufferLogger(4); - // assume SLF4J is bound to logback in the current environment LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); // Call context.reset() to clear any previous configuration, e.g. default // configuration. For multi-step configuration, omit calling context.reset(). context.reset(); - LogbackBufferLoggerAdaptor a = new LogbackBufferLoggerAdaptor(llbl); + LogbackBufferLoggerAdaptor a = new LogbackBufferLoggerAdaptor(4); a.start(); logger.addAppender(a); @@ -52,6 +49,7 @@ public class LogLevelBufferLoggerTest { logger.debug("debug 8"); logger.info("info 6"); + LogLevelBufferLogger llbl = LoggingSystemSetup.getBufferLogger(); List list = llbl.getLogs(); assertEquals(16, list.size());