2013-10-18 41 views

回答

5

你會想你的嵌入式碼頭啓動以下...

(這是假設碼頭9)

HandlerCollection handlers = new HandlerCollection(); 
ContextHandlerCollection contexts = new ContextHandlerCollection(); 
// your context specific handlers are added to "contexts" here 
server.setHandler(handlers); 

NCSARequestLog requestLog = new NCSARequestLog(); 
requestLog.setFilename("/path/to/my/logs/yyyy_mm_dd.request.log"); 
requestLog.setFilenameDateFormat("yyyy_MM_dd"); 
requestLog.setRetainDays(90); 
requestLog.setAppend(true); 
requestLog.setExtended(true); 
requestLog.setLogCookies(false); 
requestLog.setLogTimeZone("GMT"); 
RequestLogHandler requestLogHandler = new RequestLogHandler(); 
requestLogHandler.setRequestLog(requestLog); 
handlers.addHandler(requestLogHandler); 
+0

在哪裏,我補充一點。我很抱歉,我對Jetty很陌生。我可以在web.xml中配置這個嗎 – sab

+1

你說你有嵌入式碼頭,這意味着你有一些啓動你的碼頭服務器的java代碼。查找代碼,搜索「新的服務器(」),或者你沒有使用嵌入式碼頭 –

+0

我沒有訪問那部分代碼的方法,我只有一種方法可以將參數發送到jvm或編輯網頁.xml。有沒有辦法使用web.xml執行它 – sab

1

碼頭行家:

<dependency> 
     <groupId>org.eclipse.jetty.aggregate</groupId> 
     <artifactId>jetty-all</artifactId> 
     <version>9.3.8.v20160314</version> 
     <type>pom</type> 
    </dependency> 

代碼:

NCSARequestLog requestLog = new NCSARequestLog(); 
requestLog.setFilename("/path/to/my/logs/yyyy_mm_dd.request.log"); 
requestLog.setFilenameDateFormat("yyyy_MM_dd"); 
requestLog.setRetainDays(90); 
requestLog.setAppend(true); 
requestLog.setExtended(true); 
requestLog.setLogCookies(false); 
requestLog.setLogTimeZone("GMT"); // or GMT+2 and so on. 

server.setRequestLog(requestLog); // here will set global request log 

NCSARequestLog是同步日誌,如果你想使用log4j的,那樣做:

public class AccessLogHandler extends AbstractNCSARequestLog { 
    private Log logger = LogFactory.getLog(AccessLogHandler.class); 
    @Override 
    protected boolean isEnabled() { 
     return true; 
    } 

    @Override 
    public void write(String requestEntry) throws IOException { 
     logger.info(requestEntry); 
    } 

} 

使用AccessLogHandler更換NCSARequestLog和配置您的log4j.properties

相關問題