私のJavaサーブレットコードでは、プログラムで桟橋アクセスログに書き込めるようにしたいと思います。jettyはすべての着信HTTPリクエストをアクセスログに自動的に記録することを知っています。ただし、サーブレットが独自の行をアクセスログに追加する必要がある場合があります。ここで誰かが似たようなことをしたことがありますか?
ありがとう!
Lispnikは正しい方向に進んでいると思います。http://docs.codehaus.org/display/JETTY/Logging+Requestsで説明されているNCSARequestLogのハンドルを取得し、log()を呼び出してログメッセージを直接送信する必要があります。したがって、現在NCSARequestLogを構成しているコード内の場所を見つけて、作成したログへのポインターを返すコードの変更バージョンに置き換える必要があります。
誰かがここで同じことを探してつまずいた場合、それは jetty が簡単に実行できる別のことですが、ドキュメントは貧弱です。とにかく、Jetty 9 の場合、基本的な要求ログを取得するためのjetty-requestlog.xml
ファイルである を追加するだけです。もちろん、構成を有効にするにはサーバーを再起動する必要があります。$JETTY_HOME/etc/
$JETTY_HOME/etc/jetty.conf
ところで、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 サーバーのリクエスト ログの構成」セクションのようにします。