如何配置WildFly 8.2以使用AccessLogHandler

时间:2015-05-19 09:41:25

标签: jboss wildfly

我发现有一个处理程序io.undertow.server.handlers.accesslog.AccessLogHandler可以记录http访问。

但是我无法对其进行配置,因此会生成任何日志消息。

以下是我的standalone.xml中的代码段:

<filter class-name="io.undertow.server.handlers.accesslog.AccessLogHandler" name="access-log-handler" module="io.undertow.core">
    <param name="formatString" value="common"/>
    <param name="accessLogReceiver" value="io.undertow.server.handlers.accesslog.JBossLoggingAccessLogReceiver"/>
</filter>

我的问题是如何配置该处理程序,以便它开始生成日志消息。

2 个答案:

答案 0 :(得分:4)

无需为访问日志添加自定义过滤器。您所需要的只是在子系统中配置访问日志。 这将是一个例子:

<host name="default-host" >
    <location name="/" handler="welcome-content">
     ....    
    <access-log />
</host>

默认情况下会登录到带有前缀access_.log

的日志文件夹

您还可以自定义各种内容,来自xsd:

<xs:attribute name="pattern" use="optional" type="xs:string" default="common"/>
<xs:attribute name="worker" use="optional" type="xs:string" default="default"/>
<xs:attribute name="directory" use="optional" type="xs:string" default="${jboss.server.log.dir}"/>
<xs:attribute name="relative-to" use="optional" type="xs:string" />
<xs:attribute name="prefix" use="optional" type="xs:string" default="access_log"/>
<xs:attribute name="suffix" use="optional" type="xs:string" default=".log"/>

答案 1 :(得分:0)

我错过了添加此xml代码段(StackOverflow):

<host name="default-host" >
     .....
     <filter-ref name="access-log-handler"/>
</host>

然后我明白了:

Caused by: java.lang.NoSuchMethodException: io.undertow.server.handlers.accesslog.AccessLogHandler.<init>(io.undertow.server.HttpHandler)"}}

这是一个众所周知的错误:请参阅thisthis

可以使用jboss-cli添加处理程序并查看standalone.xml如何更改:

/subsystem=undertow/configuration=filter/custom-filter=access-log-handler:add(class-name=io.undertow.server.handlers.accesslog.AccessLogHandler, module=io.undertow.core)
/subsystem=undertow/server=default-server/host=default-host/filter-ref=access-log-handler:add