2009-08-21 55 views
0

在我的Java servlet代碼中,我希望能夠以編程方式寫入碼頭訪問日誌。我知道jetty會自動將每個傳入的HTTP請求記錄到訪問日誌中。但是,我的servlet需要偶爾將它自己的行添加到訪問日誌中。這裏有人做過類似的事嗎?碼頭:如何寫入訪問日誌

謝謝!

回答

3

我覺得Lispnik是在正確的軌道上。您想要獲得http://docs.codehaus.org/display/JETTY/Logging+Requests中描述的NCSARequestLog句柄,並通過調用log()直接發送日誌消息給它。所以你想在你的代碼中找到當前正在配置NCSARequestLog的地方,並用一個修改後的代碼版本替代,它將返回指向它創建的日誌的指針。

2

如果有人在這裏找到同樣的東西,這是碼頭很容易做到的另一件事,但文件很糟糕。無論如何,對於Jetty 9,您只需添加jetty-requestlog.xml,這是$JETTY_HOME/etc/$JETTY_HOME/etc/jetty.conf中的文件即可獲取基本的請求日誌。當然,您必須重新啓動服務器以使配置生效。

1

順便說,另一種方式來完成同樣的在碼頭9是在"Handlers"部分添加三線以下(從here)在$JETTY_HOME/etc/jetty.xml

<Item> 
    <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/> 
</Item> 

和,在"Handlers"節,添加以下代碼:

<Ref id="RequestLog"> 
    <Set name="requestLog"> 
    <New id="RequestLogImpl" class="org.eclipse.jetty.NCSARequestLog"> 
    <Arg><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Arg> 
     <Set name="retainDays">90</Set> 
     <Set name="append">true</Set> 
     <Set name="extended">false</Set> 
     <Set name="LogTimeZone">GMT</Set> 
    </New> 
    </Set> 
</Ref> 

也就是說,讓這些部分看起來像部分在此012「配置一個Jetty服務器的請求日誌」。