在JBoss 7.1.1中是否有记录HTTP post数据的方法?

4

有没有一种方法可以记录JBoss 7.1.1中的HTTP post数据?

在日志配置中,是否有一个可以设置为DEBUG的类来输出这个数据?

1个回答

6
你可以在standlone.xmldomain.xml文件的Web子系统中配置HTTP访问日志记录。以下是一个示例:
<subsystem xmlns="urn:jboss:domain:web:1.0" ....>
    <connector name="http" ... />
    <virtual-server name="default-host" enable-welcome-root="true">
        <whatever aliases you may have defined />
        <access-log>
            <directory relative-to="jboss.server.log.dir"/>
        </access-log>
    </virtual-server>
</subsystem>

或者你可以使用CLI(推荐 - 使用tab补全功能查找可用属性):

/subsystem=web/virtual-server=default-host/access-log=configuration:add(whatever-attributes-you-want-for-access-log)

根据下面评论的更新

如果你想要追踪HTTP请求内容,那么你需要启用RequestDumperValve。在JBossAS7中,你不能全局启用(与AS5或AS6不同)。你必须在每个部署上启用它。在WEB-INF\jboss-web.xml文件中添加这一行:

<valve>
        <class-name>org.apache.catalina.valves.RequestDumperValve</class-name>
</valve>

您不需要启用访问日志以便使用阀门,它会将信息输出到server.log文件中。您可以了解更多关于RequestDumperValve的内容。您可能还对RequestFilterValve感兴趣。
这些阀门通常用于调试目的,而不是在生产环境中使用。因此请谨记,它们的输出非常详细。或者,您可以查看像WireSharkFiddler这样的工具。如果您确实想深入挖掘,可以使用TCPDumps(注意 – 它们非常大且复杂)。
希望这能帮到您!

添加<access-log/>会创建一个日志,记录POST请求发生的时间,但我想实际查看POST内容。我能想到的最好方法是添加Servlet过滤器,但一旦这样做,我就无法将POST参数传递给目标框架Servlet。我希望JBoss有一种方式可以在流向Web应用程序的过程中记录流量。有这个可能吗? - JustinKSU
@JustinKSU - 当然,在帖子中添加了更多信息来回答您的评论。希望对您有所帮助。 - CoolBeans
正是我所寻找的。对于我在原始帖子中表达不够清楚,我向您道歉。 - JustinKSU
@JustinKSU - 没问题。我很高兴能帮到你。祝你在 JBoss 上愉快! - CoolBeans
2
在 standalone.xml 中按以下配置片段全局启用 RequestDumperValve(位于 <subsystem xmlns="urn:jboss:domain:web:1.4"...>):<valve name="RequestLogging" module="org.jboss.as.web" class-name="org.apache.catalina.valves.RequestDumperValve"/> - Marek Gregor
@MarekGregor - 是的,他们在后续版本中添加了全局阀门支持。最初并没有这个功能。 - CoolBeans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接