如何使用自定义记录器在spring boot中记录访问日志

Row*_*nto 11 java spring log4j2 spring-boot undertow

目前在spring boot 1.3中,我们只能将访问日志记录到文件系统中的文件中.有没有办法实际使用自定义记录器(如log4j2)来记录访问日志?

我目前正在使用带有spring boot的下载,但是在检查了spring boot源代码之后,使用DefaultAccessLogReceiver初始化了underow logger,它正在写入文件.我想尽可能使用AccessLogHandler,并避免编写记录访问权限的Web过滤器.

这有什么简单的方法吗?(写拉取请求除外)

thi*_*row 5

这种硬编码因此不可定制的问题的一个技巧是隐藏类以使用具有相同包和名称的新类.您所要做的就是提供一个基于log4j的文件DefaultAccessLogReceiver ,并确保它可以在下载库中的类加载器之前进行搜索.

package io.undertow.server.handlers.accesslog;

public class DefaultAccessLogReceiver implements AccessLogReceiver {

    public void logMessage(final String message) {
        // TODO: log with log4j
    }
}
Run Code Online (Sandbox Code Playgroud)