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:
parent
8c8b51fe24
commit
bd3c68131a
@ -7,19 +7,31 @@ import ch.qos.logback.core.AppenderBase;
|
|||||||
|
|
||||||
public class LogbackBufferLoggerAdaptor extends AppenderBase<ILoggingEvent> {
|
public class LogbackBufferLoggerAdaptor extends AppenderBase<ILoggingEvent> {
|
||||||
|
|
||||||
private final LogHelper logHelper;
|
private final DelegatorLogger logHelper;
|
||||||
|
private final LogLevelBufferLogger logBuffer;
|
||||||
|
|
||||||
public LogbackBufferLoggerAdaptor() {
|
private static final int LOG_BUFFER_LENGTH = 50;
|
||||||
logHelper = LoggingSystemSetup.getInstance();
|
|
||||||
|
public LogbackBufferLoggerAdaptor(int bufferLength) {
|
||||||
|
logHelper = new DelegatorLogger();
|
||||||
|
logBuffer = new LogLevelBufferLogger(bufferLength);
|
||||||
|
logHelper.addLogger(logBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LogbackBufferLoggerAdaptor(LogHelper logHelper) {
|
public LogbackBufferLoggerAdaptor() {
|
||||||
this.logHelper = logHelper;
|
this(LOG_BUFFER_LENGTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
DelegatorLogger getLogHelper() {
|
||||||
|
return logHelper;
|
||||||
|
}
|
||||||
|
|
||||||
|
LogLevelBufferLogger getLogBuffer() {
|
||||||
|
return logBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void append(ILoggingEvent e) {
|
protected void append(ILoggingEvent e) {
|
||||||
e.getCallerData();
|
|
||||||
LogLine ll = toLogLine(e);
|
LogLine ll = toLogLine(e);
|
||||||
|
|
||||||
logHelper.log(ll);
|
logHelper.log(ll);
|
||||||
|
@ -1,18 +1,16 @@
|
|||||||
package net.sf.openrocket.logging;
|
package net.sf.openrocket.logging;
|
||||||
|
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import ch.qos.logback.classic.Logger;
|
||||||
|
|
||||||
|
|
||||||
public class LoggingSystemSetup {
|
public class LoggingSystemSetup {
|
||||||
|
|
||||||
private static final DelegatorLogger delegator = new DelegatorLogger();
|
// This class is highly dependent on the logback.xml file.
|
||||||
|
// It assumes logback is the logging backend and that
|
||||||
private static final int LOG_BUFFER_LENGTH = 50;
|
// there is an appender named "buffer" and that appender
|
||||||
|
// is the LogbackBufferLoggerAdapter.
|
||||||
private static final LogLevelBufferLogger llbl = new LogLevelBufferLogger(LOG_BUFFER_LENGTH);
|
|
||||||
|
|
||||||
static {
|
|
||||||
delegator.addLogger(llbl);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the logger to be used in logging.
|
* Get the logger to be used in logging.
|
||||||
@ -20,11 +18,15 @@ public class LoggingSystemSetup {
|
|||||||
* @return the logger to be used in all logging.
|
* @return the logger to be used in all logging.
|
||||||
*/
|
*/
|
||||||
public static DelegatorLogger getInstance() {
|
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() {
|
public static LogLevelBufferLogger getBufferLogger() {
|
||||||
return llbl;
|
Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
|
||||||
|
LogbackBufferLoggerAdaptor adapater = (LogbackBufferLoggerAdaptor) logger.getAppender("buffer");
|
||||||
|
return adapater.getLogBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,16 +18,13 @@ public class LogLevelBufferLoggerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testLogger() {
|
public void testLogger() {
|
||||||
|
|
||||||
DelegatorLogger l = new DelegatorLogger();
|
|
||||||
LogLevelBufferLogger llbl = new LogLevelBufferLogger(4);
|
|
||||||
|
|
||||||
// assume SLF4J is bound to logback in the current environment
|
// assume SLF4J is bound to logback in the current environment
|
||||||
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
|
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
|
||||||
|
|
||||||
// Call context.reset() to clear any previous configuration, e.g. default
|
// Call context.reset() to clear any previous configuration, e.g. default
|
||||||
// configuration. For multi-step configuration, omit calling context.reset().
|
// configuration. For multi-step configuration, omit calling context.reset().
|
||||||
context.reset();
|
context.reset();
|
||||||
LogbackBufferLoggerAdaptor a = new LogbackBufferLoggerAdaptor(llbl);
|
LogbackBufferLoggerAdaptor a = new LogbackBufferLoggerAdaptor(4);
|
||||||
a.start();
|
a.start();
|
||||||
logger.addAppender(a);
|
logger.addAppender(a);
|
||||||
|
|
||||||
@ -52,6 +49,7 @@ public class LogLevelBufferLoggerTest {
|
|||||||
logger.debug("debug 8");
|
logger.debug("debug 8");
|
||||||
logger.info("info 6");
|
logger.info("info 6");
|
||||||
|
|
||||||
|
LogLevelBufferLogger llbl = LoggingSystemSetup.getBufferLogger();
|
||||||
List<LogLine> list = llbl.getLogs();
|
List<LogLine> list = llbl.getLogs();
|
||||||
assertEquals(16, list.size());
|
assertEquals(16, list.size());
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user