0

在我的 Java servlet 代码中,我希望能够以编程方式写入码头访问日志。我知道码头会自动将每个传入的 HTTP 请求记录到访问日志中。但是,我的 servlet 偶尔需要将它自己的行附加到访问日志中。这里有人做过类似的事情吗?

谢谢!

4

4 回答 4

3

我认为 Lispnik 走在正确的轨道上。您想获取http://docs.codehaus.org/display/JETTY/Logging+Requests中描述的 NCSARequestLog 的句柄,并通过调用 log() 直接向它发送日志消息。因此,您希望在代码中找到当前配置 NCSARequestLog 的位置,并替换代码的修改版本,该代码将返回指向它创建的日志的指针。

于 2009-08-22T17:15:52.743 回答
2

如果有人在这里偶然发现相同的东西,这是码头很容易做的另一件事,但文档很差。无论如何,对于 Jetty 9,您只需添加jetty-requestlog.xml,这是一个文件$JETTY_HOME/etc/$JETTY_HOME/etc/jetty.conf获取基本请求日志。当然,您必须重新启动服务器才能使配置生效。

于 2014-08-24T03:02:36.197 回答
1

顺便说一句,在 Jetty 9 中完成相同操作的另一种方法是在以下部分中添加以下三行(从此处开始):"Handlers"$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>

也就是说,使这些部分看起来像本页中的“为 Jetty 服务器配置请求日志”部分。

于 2014-10-03T18:40:22.517 回答
0

子类化和配置:http ://docs.codehaus.org/display/JETTY/Logging+Requests

于 2009-08-22T09:07:17.663 回答