2009-08-21 52 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服务器的请求日志”。