【问题标题】:Jetty: How to write to access logsJetty:如何写入访问日志
【发布时间】:2009-08-21 20:57:19
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: java logging servlets jetty


    【解决方案1】:

    我认为 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 即可获得基本请求日志。当然,您必须重新启动服务器才能使配置生效。

    【讨论】:

      【解决方案3】:

      顺便说一句,在 Jetty 9 中实现相同功能的另一种方法是在 $JETTY_HOME/etc/jetty.xml"Handlers" 部分添加以下三行(来自 here):

      <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>
      

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

      【讨论】:

        【解决方案4】:
        猜你喜欢
        • 2017-03-17
        • 2014-01-01
        • 1970-01-01
        • 2011-04-26
        • 2015-09-15
        • 2017-05-17
        • 1970-01-01
        • 1970-01-01
        • 2011-04-02
        相关资源
        最近更新 更多