[logback-user] ContextSelector and getLogger
Martin Burchard
martin.burchard at pentos.com
Thu Mar 5 15:26:41 CET 2009
Hello,
I currently try to get SLF4J and Logback to work on IBM Lotus Domino Server
8.5.
It's working.
We need to do logging an a per Thread basis because we log into a Domino
database. The Java object of a Domino database is based on a session object,
and that can not exist over more then one thread.
Okay, I created a simple ContextSelector:
package de.pentos.domino.logging;
import java.util.Arrays;
import java.util.List;
import ch.qos.logback.classic.LoggerContext;
/**
* @author Martin Burchard
*/
public class ContextSelector implements
ch.qos.logback.classic.selector.ContextSelector {
private final LoggerContext defaultContext;
private static final ThreadLocal<LoggerContext> threadLocal = new
ThreadLocal<LoggerContext>();
public ContextSelector(final LoggerContext context) {
defaultContext = context;
}
public LoggerContext detachLoggerContext(final String loggerContextName) {
return getLoggerContext();
}
public List<String> getContextNames() {
return Arrays.asList(getLoggerContext().getName());
}
public LoggerContext getDefaultLoggerContext() {
return defaultContext;
}
public LoggerContext getLoggerContext() {
LoggerContext lc = threadLocal.get();
if (lc == null) {
threadLocal.set(new LoggerContext());
}
return threadLocal.get();
}
public LoggerContext getLoggerContext(final String name) {
if (getLoggerContext().getName().equals(name)) {
return getLoggerContext();
}
return null;
}
}
As long as all Loggers are used like this:
private Logger log = LoggerFactory.getLogger(DemoWebService.class);
everything works fine, I get my logging.
But also this is a common way to get my Logger:
private static final Logger log =
LoggerFactory.getLogger(DemoWebService.class);
Because for WebServices and Servlets the VM is not terminated and these
Logger Instance will live a long time without ever get refreshed.
After the first run I don't see logging any more.
How can I deal with external JARs like Apache HTTP Client and other that
instantiate the loggers in a static way?
Regards,
Martin
--
View this message in context: http://www.nabble.com/ContextSelector-and-getLogger-tp22352655p22352655.html
Sent from the Logback User mailing list archive at Nabble.com.
More information about the Logback-user
mailing list