import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.gaffer.GafferConfigurator;
import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.core.joran.spi.JoranException;
import ch.qos.logback.core.status.ErrorStatus;
import ch.qos.logback.core.status.Status;
import ch.qos.logback.core.status.StatusManager;
import ch.qos.logback.core.status.StatusUtil;
public static void configureLogging(URL configUrl)
{
final String GROOVY_EXTENSION = ".groovy";
ILoggerFactory loggerFactory = LoggerFactory.getILoggerFactory();
if(loggerFactory instanceof LoggerContext)
{
LoggerContext loggerContext = (LoggerContext) loggerFactory;
StatusManager sm = loggerContext.getStatusManager();
sm.clear();
loggerContext.reset();
if(configUrl.toString().endsWith(GROOVY_EXTENSION))
{
GafferConfigurator configurator = new GafferConfigurator(loggerContext);
try
{
configurator.run(configUrl);
}
catch (RuntimeException ex)
{
sm.add(new ErrorStatus("Exception while configuring Logback!", configUrl, ex));
}
}
else
{
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(loggerContext);
try
{
configurator.doConfigure(configUrl);
}
catch (JoranException ex)
{
sm.add(new ErrorStatus("Exception while configuring Logback!", configUrl, ex));
}
}
}
}