我发现有一个处理程序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>
我的问题是如何配置该处理程序,以便它开始生成日志消息。
答案 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)"}}
可以使用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