2015-12-04 3 views
2

Возможно ли распечатать весь запрос/ответ tomcat на logfile?Зарегистрировать все HTTP-запросы Tomcat Server?

например:

запрос

заголовки: [header1 = а, header2 = а]

PARAMS: [param1 = AVV, param2 = Ь]

ответ

status-code = 200

ответа = его работа

+0

Посмотрите на свой server.xml для шаблона в access.log для ответа. Чтобы получить заголовок и другие данные, вам может понадобиться написать собственный клапан. – SMA

ответ

9

Положить 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 может принимать один из двух сокращённых значений (общего, в сочетании) или пользовательский шаблон с использованием ряда констант и заменяющих строк. Процитирует кот документы:

https://tomcat.apache.org/tomcat-8.0-doc/config/valve.html#Access_Log_Valve

значение для атрибута шаблона состоит из буквальных текстовых строк, в сочетании с рисунком идентификаторов предваряются символом «%» для замены вызывают на соответствующем переменное значение от текущего запроса . Следующие коды модели поддерживаются:

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

Существует также поддержка записи информации входящих или исходящих заголовки, куки, сессии или запроса атрибуты и специальные метки времени форматы. Он моделируется после конфигурации журнала журнала Apache HTTP Server . Каждый из них может быть использован несколько раз с разными ключами ххх :

%{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 реализации.

+2

Нет поддержки для ведения журнала * все * заголовки? (в основном это был вопрос) – peterh

+0

http: // stackoverflow.ком/вопросы/17545691/как-на-лог-все-Headers-на-запрос-ответ-в-7-кот –

-1

David Lee говорит добавить к вашей server.xml:

<Valve className="org.apache.catalina.valves.RequestDumperValve"/>

, но, я думаю, что это кот 6; этот ответ показывает, как использовать Request_Dumper_Filter в tomcat 7 https://stackoverflow.com/a/8727615/1763984

Смежные вопросы