在我的Java servlet代碼中,我希望能夠以編程方式寫入碼頭訪問日誌。我知道jetty會自動將每個傳入的HTTP請求記錄到訪問日誌中。但是,我的servlet需要偶爾將它自己的行添加到訪問日誌中。這裏有人做過類似的事嗎?碼頭:如何寫入訪問日誌
謝謝!
在我的Java servlet代碼中,我希望能夠以編程方式寫入碼頭訪問日誌。我知道jetty會自動將每個傳入的HTTP請求記錄到訪問日誌中。但是,我的servlet需要偶爾將它自己的行添加到訪問日誌中。這裏有人做過類似的事嗎?碼頭:如何寫入訪問日誌
謝謝!
我覺得Lispnik是在正確的軌道上。您想要獲得http://docs.codehaus.org/display/JETTY/Logging+Requests中描述的NCSARequestLog句柄,並通過調用log()直接發送日誌消息給它。所以你想在你的代碼中找到當前正在配置NCSARequestLog的地方,並用一個修改後的代碼版本替代,它將返回指向它創建的日誌的指針。
如果有人在這裏找到同樣的東西,這是碼頭很容易做到的另一件事,但文件很糟糕。無論如何,對於Jetty 9,您只需添加jetty-requestlog.xml
,這是$JETTY_HOME/etc/
到$JETTY_HOME/etc/jetty.conf
中的文件即可獲取基本的請求日誌。當然,您必須重新啓動服務器以使配置生效。
順便說,另一種方式來完成同樣的在碼頭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服務器的請求日誌」。