2011-08-15 70 views
7

如何配置jetty以使用使用log4j?我已经使用log4j的在我的应用程序,而码头日志标准错误......如何配置jetty以使用log4j?

import org.apache.log4j.Logger; 
import org.apache.log4j.PropertyConfigurator; 
import org.eclipse.jetty.server.Connector; 
import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.server.nio.SelectChannelConnector; 
import org.eclipse.jetty.servlet.ServletContextHandler; 
import org.eclipse.jetty.servlet.ServletHolder; 

public class Test { 

    static final Logger logger = Logger.getLogger(Test.class); 

    public static void main(String[] args) { 

     PropertyConfigurator.configure("log4j.properties"); 
     logger.info("Started."); 

     Server server = new Server(); 

     Connector connector = new SelectChannelConnector(); 
     connector.setHost("127.0.0.1"); 
     connector.setPort(8080);  

     ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); 
     context.setContextPath("/"); 
     context.addServlet(new ServletHolder(new ServletHome()), "/");      

     // disable jettys default logger 
     //org.eclipse.jetty.util.log.Log.setLog(null); 

     server.addConnector(connector); 
     server.setHandler(context); 

     logger.debug("Starting jetty."); 
     try { 
      server.start(); 
      server.join(); 
     } catch (Exception e) { 
      logger.error("Ooops."); 
     } 

     logger.info("Finished."); 
    } 
} 
+0

谢谢@musiKk。我将slf4j-api.jar slf4j-log4j.jar添加到了我的类路径中,并且确实自动进行了连线。 这可能是值得一提的是,当调试日志log4j的启用码头是很吵,所以我说这log4j.properties降低噪音: 'log4j.logger.org.eclipse.jetty = INFO' – phatypus

+0

是,这很常见。调试级别通常非常冗长,有时选择性激活或停用包来获得更明智的输出是有意义的。 – musiKk

回答

9

码头使用slf4j for logging。 slf4j允许统一的日志API连接到任何支持的日志框架。当然,也支持log4j。您所要做的就是将slf4j API和slf4j-log4j连接器都放到您的类路径中。它应该自动连线。