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".
This commit is contained in:
kruland2607 2013-05-10 10:39:35 -05:00
parent 8c8b51fe24
commit bd3c68131a
3 changed files with 34 additions and 22 deletions

View File

@ -7,19 +7,31 @@ import ch.qos.logback.core.AppenderBase;
public class LogbackBufferLoggerAdaptor extends AppenderBase<ILoggingEvent> {
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);

View File

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

View File

@ -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<LogLine> list = llbl.getLogs();
assertEquals(16, list.size());