2011-08-15 69 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連接器都放到您的類路徑中。它應該自動連線。