web-dev-qa-db-ja.com

TomcatサーバーのすべてのHTTPリクエストをログに記録しますか?

Tomcatへのすべての要求とTomcatからの応答をログファイルに出力することは可能ですか?

例:

リクエスト

ヘッダー:[header1 = a、header2 = a]

params:[param1 = avv、param2 = b]

応答

ステータスコード= 200

応答=その作品

7
user155542

AccessLogValveまたはHost要素にContextを入れます。例:

<Host name="www.mysite.com" appBase="..." >

    <Valve className="org.Apache.catalina.valves.AccessLogValve"
     directory="logs" prefix="mysitelog." suffix=".txt" 
     pattern="..." resolveHosts="false" />

</Host> 

pattern属性は、2つの省略値(commoncombined)、またはいくつかの定数と置換文字列を使用したカスタムパターン。 Tomcatドキュメントを引用させてください:

https://Tomcat.Apache.org/Tomcat-8.0-doc/config/Valve.html#Access_Log_Valve

Pattern属性の値は、リテラルテキスト文字列で構成され、「%」文字が前に付いたパターン識別子と組み合わされて、現在の要求と応答からの対応する変数値に置き換えられます。次のパターンコードがサポートされています。

%a - Remote IP address
%A - Local IP address
%b - Bytes sent, excluding HTTP headers, or '-' if zero
%B - Bytes sent, excluding HTTP headers
%h - Remote Host name (or IP address if enableLookups for the connector is false)
%H - Request protocol
%l - Remote logical username from identd (always returns '-')
%m - Request method (GET, POST, etc.)
%p - Local port on which this request was received. See also %{xxx}p below.
%q - Query string (prepended with a '?' if it exists)
%r - First line of the request (method and request URI)
%s - HTTP status code of the response
%S - User session ID
%t - Date and time, in Common Log Format
%u - Remote user that was authenticated (if any), else '-'
%U - Requested URL path
%v - Local server name
%D - Time taken to process the request, in millis
%T - Time taken to process the request, in seconds
%F - Time taken to commit the response, in millis
%I - Current request thread name (can compare later with stacktraces)

着信または発信ヘッダー、Cookie、セッションまたはリクエスト属性、および特別なタイムスタンプ形式の情報を書き込むためのサポートもあります。これは、Apache HTTP Serverログ構成構文をモデルにしています。それぞれを異なるxxxキーで複数回使用できます。

%{xxx}i write value of incoming header with name xxx
%{xxx}o write value of outgoing header with name xxx
%{xxx}c write value of cookie with name xxx
%{xxx}r write value of ServletRequest attribute with name xxx
%{xxx}s write value of HttpSession attribute with name xxx
%{xxx}p write local (server) port (xxx==local) or remote (client) port (xxx=remote)
%{xxx}t write timestamp at the end of the request formatted using the enhanced SimpleDateFormat pattern xxx

ご覧のとおり、使用できるフィールドはかなりありますが、それでもまだ必要な場合は、独自のAccessLogValve実装を作成する必要があります。

15

https://Tomcat.Apache.org/Tomcat-7.0-doc/config/filter.html#Request_Dumper_Filter

リクエストダンパーフィルターは、requestおよびresponseオブジェクトからの情報をログに記録し、デバッグ目的で使用することを目的としています。

Webアプリケーションのweb.xmlの次のエントリは、そのWebアプリケーションのすべてのリクエストに対してリクエストダンパーフィルターを有効にします。

エントリがCATALINA_BASE/conf/web.xmlに追加された場合、リクエストダンパーフィルターはfor all web applicationsで有効になります。

<filter>
    <filter-name>requestdumper</filter-name>
    <filter-class>
        org.Apache.catalina.filters.RequestDumperFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>requestdumper</filter-name>
    <url-pattern>*</url-pattern>
</filter-mapping>
5
daggett