繁体   English   中英

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

[英]How to use custom logger to log access log in spring boot

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

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

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

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

package io.undertow.server.handlers.accesslog;

public class DefaultAccessLogReceiver implements AccessLogReceiver {

    public void logMessage(final String message) {
        // TODO: log with log4j
    }
}

除了commons-logging API之外,Spring Boot没有强制的日志记录依赖性,其中有许多实现可供选择。 要使用Logback,您需要包含它,以及在类路径上记录commons的一些绑定。 最简单的方法是通过启动器poms,它们都依赖于spring-boot-starter-logging。 对于Web应用程序,您只需要spring-boot-starter-web,因为它依赖于日志记录启动器。 例如,使用Maven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Spring Boot有一个LoggingSystem抽象,它试图根据类路径的内容配置日志记录。 如果Logback可用,则它是第一选择。

Spring Boot还支持Log4j或Log4j 2进行日志记录配置,但前提是其中一个在类路径中。 如果您使用starter poms来组合依赖项,则意味着您必须排除Logback,然后包含您选择的Log4j版本。 如果您没有使用启动器poms,那么除了选择的Log4j版本之外,还需要提供commons-logging(至少)。

最简单的路径可能是通过启动器poms,即使它需要在Maven中使用排除,.eg进行一些抖动:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>

要使用Log4j 2,只需依赖spring-boot-starter-log4j2而不是spring-boot-starter-log4j。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM