Dump HTTP requests in WildFly 8

匿名 (未验证) 提交于 2019-12-03 01:57:01

问题:

To debug HTTP requests during development, I would like my WildFly 8 application server to dump HTTP requests, including request method and headers, to a log file. server.log would be fine.

In the sources of WildFly's HTTP subsystem, I found RequestDumpingHandler and the corresponding logging category io.undertow.request.dump

However, I cannot figure out, how to install that header so that it is applied for all requests served by my application (a WAR with some static resources and JAX-RS handler).

The corresponding documentation page (Undertow web subsystem configuration) doesn't really explain handlers. There is a element in the configuration section

      ...              ...                                                                                                                                                                                                                                                                       ...          ... 

but as far as I can tell, only and proxy are expected there(?).

How can I log full details of incoming HTTP requests in WildFly? I know I could install some logging mechanism at the JAX-RS layer, but I would like to have one dump mechanism that handles both REST API calls and statically served resources.

回答1:

You would need to add RequestDumpingHandler to your handler chain.

As part of wildfly 8.1, that is not yet possible in a friendly way.

This is improved in 8.2 and 9 so you will be able to configure this by adding something like this:

      .....        ....      ...      

in 8.1 only option now would be to add ServletExtension http://undertow.io/undertow-docs/undertow-docs-1.2.0/#servlet-extensions

that would add this RequestDumpingHandler to outer chain.

FWIW 8.2 release is almost ready, so you could wait for it or just build sources for 8.x branch.

To add above config via CLI, you can use:

/subsystem=undertow/configuration=filter/custom-filter=request-dumper:add(class-name="io.undertow.server.handlers.RequestDumpingHandler",  module="io.undertow.core") /subsystem=undertow/server=default-server/host=default-host/filter-ref=request-dumper:add


回答2:

There are a number of people asking how to get the entire HTTP body logged out, not just the headers.

It seems an answer exists: https://8bitplatoon.blogspot.com/2017/02/dumping-http-requests-and-responses-in.html

In short, if that link doesn't survive, a simple addition to your standalone.xml will do the trick:

I added this after the ... and before ..., restarted wildfly, and was able to get complete HTTP bodies in my server logs (server.log in my case).

This does not interact with or depend on the Undertow "request dumper" at all as far as I can tell, you can do one, the other, or both.



转载请标明出处:Dump HTTP requests in WildFly 8
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!