web-dev-qa-db-fra.com

Consignez toutes les requêtes HTTP du serveur Tomcat?

Est-il possible d'imprimer toutes les demandes à Tomcat et les réponses de Tomcat dans un fichier journal?

ex:

demande

en-têtes: [header1 = a, header2 = a]

params: [param1 = avv, param2 = b]

réponse

code d'état = 200

réponse = ses travaux

5
user155542

Mettez une AccessLogValve dans l'élément Host ou Context, par exemple:

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

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

</Host> 

L'attribut pattern peut prendre l'une des deux valeurs abrégées ( commun , combiné ) ou un modèle personnalisé utilisant un nombre de constantes et de chaînes de remplacement. Permettez-moi de citer les documents Tomcat:

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

Les valeurs de l'attribut pattern sont constituées de chaînes de texte littérales, combinées à des identifiants de modèle précédés du caractère "%" à ​​, Ce qui entraîne le remplacement par la valeur de variable correspondante du En cours. demande et réponse. Les codes de modèle suivants sont pris en charge:

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

Il est également possible d’écrire des en-têtes Entrants ou sortants, des cookies, des attributs de session ou de demande et des formats spéciaux d’horodatage . Il est modélisé d'après la syntaxe de configuration du journal du serveur HTTP Apache HTTP Server. Chacun d’eux peut être utilisé plusieurs fois avec différentes clés 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

Comme vous pouvez le constater, de nombreux champs peuvent être utilisés, mais si vous avez encore besoin de plus, vous devez écrire votre propre implémentation AccessLogValve.

12
Richard Osseweyer

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

Le filtre de demande de Dumper enregistre les informations des objets request et response et est destiné à être utilisé à des fins de débogage. 

Les entrées suivantes dans web.xml d'une application Web permettraient d'activer le filtre Demander Dumper pour toutes les demandes de cette application Web. 

Si les entrées ont été ajoutées à CATALINA_BASE/conf/web.xml, le filtre de Dumper de demandes serait activé 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>
1
daggett