如何配置 WildFly 8.2 以使用 AccessLogHandler

How to configure WildFly 8.2 to use AccessLogHandler

我发现有一个处理程序 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>

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

我错过了添加这个 xml 片段 (Whosebug):

<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)"}}

这是一个已知错误:请参阅 this, or this

可以使用 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

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

<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"/>