package org.opentripplanner.api.servlet; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.slf4j.bridge.SLF4JBridgeHandler; /** * Jersey uses java.util.logging for logging. It sends everything to stderr with a different * format than OTP internal logging calls. org.slf4j.bridge.SLF4JBridgeHandler redirects all JUL * calls to SLF4J API, which is the public interface of Logback. * If you tell SLF4JBridgeHandler to bridge inside the servlet, it doesn't affect Jersey logging. * This is presumably because of how servlet containers isolate classloaders. By performing the * setup in a contextListener it actually applies to Jersey. * Messages from the servlet container may still go to stderr (this is the case for Tomcat). That * would probably need to be configured in the servlet container itself, if you care. * @author abyrd */ public class LoggingConfigurationListener implements ServletContextListener { @Override public void contextDestroyed(ServletContextEvent arg0) { } @Override public void contextInitialized(ServletContextEvent arg0) { SLF4JBridgeHandler.removeHandlersForRootLogger(); SLF4JBridgeHandler.install(); } }