0

私のJavaサーブレットコードでは、プログラムで桟橋アクセスログに書き込めるようにしたいと思います。jettyはすべての着信HTTPリクエストをアクセスログに自動的に記録することを知っています。ただし、サーブレットが独自の行をアクセスログに追加する必要がある場合があります。ここで誰かが似たようなことをしたことがありますか?

ありがとう!

4

4 に答える 4

3

Lispnikは正しい方向に進んでいると思います。http://docs.codehaus.org/display/JETTY/Logging+Requestsで説明されているNCSARequestLogのハンドルを取得し、log()を呼び出してログメッセージを直接送信する必要があります。したがって、現在NCSARequestLogを構成しているコード内の場所を見つけて、作成したログへのポインターを返すコードの変更バージョンに置き換える必要があります。

于 2009-08-22T17:15:52.743 に答える
2

誰かがここで同じことを探してつまずいた場合、それは jetty が簡単に実行できる別のことですが、ドキュメントは貧弱です。とにかく、Jetty 9 の場合、基本的な要求ログを取得するためのjetty-requestlog.xmlファイルである を追加するだけです。もちろん、構成を有効にするにはサーバーを再起動する必要があります。$JETTY_HOME/etc/$JETTY_HOME/etc/jetty.conf

于 2014-08-24T03:02:36.197 に答える
1

ところで、Jetty 9 で同じことを行う別の方法は、次の 3 行 (ここから) を の"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 に答える