package net.sf.openrocket.logging;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.ConsoleAppender;
public class LoggingSystemSetup {
// 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.
/**
* Add a Console Appender. We do this programmatically so the application does not need
* to include additional jars required for the logback <if> syntax to function.
*/
public static void addConsoleAppender() {
Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
ConsoleAppender<ILoggingEvent> appender = new ConsoleAppender<ILoggingEvent>();
appender.setName("console");
appender.setContext(context);
PatternLayoutEncoder layout = new PatternLayoutEncoder();
layout.setContext(context);
layout.setPattern("%-8relative %-5marker %-5level [%thread] %logger{2} - %message%n");
layout.start();
appender.setEncoder(layout);
appender.start();
logger.addAppender(appender);
}
public static void setupLoggingAppender() {
Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
logger.detachAndStopAllAppenders();
logger.setLevel(Level.TRACE);
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
LogbackBufferLoggerAdaptor appender = new LogbackBufferLoggerAdaptor();
appender.setName("buffer");
appender.setContext(context);
appender.start();
logger.addAppender(appender);
}
/**
* Get the logger to be used in logging.
*
* @return the logger to be used in all logging.
*/
public static DelegatorLogger getInstance() {
Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
LogbackBufferLoggerAdaptor adapater = (LogbackBufferLoggerAdaptor) logger.getAppender("buffer");
return adapater.getLogHelper();
}
public static LogLevelBufferLogger getBufferLogger() {
Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
LogbackBufferLoggerAdaptor adapater = (LogbackBufferLoggerAdaptor) logger.getAppender("buffer");
return adapater.getLogBuffer();
}
}