在我的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服务器的请求日志”。