package fr.openwide.core.commons.util.logging;
import java.util.logging.Handler;
import java.util.logging.LogManager;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.bridge.SLF4JBridgeHandler;
/**
* This listener inits the {@link SLF4JBridgeHandler} and enables java.util.logging (jul) calls to
* be handled by slf4j choosen backend.
*
* Add this to web.xml to use it :
* <listener>
* <listener-class>fr.openwide.sqm.remote.web.util.SLF4JLoggingListener</listener-class>
* </listener>
*
*/
public class SLF4JLoggingListener implements ServletContextListener {
private static final Logger LOGGER = LoggerFactory.getLogger(SLF4JLoggingListener.class);
@Override
public void contextInitialized(ServletContextEvent sce) {
// Jersey uses java.util.logging - bridge to slf4
java.util.logging.Logger rootLogger = LogManager.getLogManager().getLogger("");
Handler[] handlers = rootLogger.getHandlers();
for (int i = 0; i < handlers.length; i++) {
rootLogger.removeHandler(handlers[i]);
}
SLF4JBridgeHandler.install();
LOGGER.info("jul-to-slf4j installed");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}