如何在 spring 启动应用程序中实例化日志

How to instantiate logbook in spring boot app

我有一个简单的 Spring 启动应用程序,它 logbook-spring-boot-starter 依赖于 logbook 库。

文档说忽略健康检查请求,像这样连接日志:

Logbook logbook = Logbook.builder()
    .condition(exclude(
        requestTo("/health"),
        requestTo("/admin/**"),
        contentType("application/octet-stream"),
        header("X-Secret", newHashSet("1", "true")::contains)))
    .build();

这听起来可能很天真,但我不知道应该把它连接到哪里。我应该把它放在任何特定的 class 或带有特定注释的方法中吗?一个例子会有所帮助。

真的很简单。只需在 @Configuration class:

中创建一个 Logbook 类型的 bean
@Configuration
public class LogbookConfiguration {

    @Bean
    public Logbook logbook() {
        Logbook logbook = Logbook.builder()
            .condition(exclude(
                requestTo("/health"),
                requestTo("/admin/**"),
                contentType("application/octet-stream"),
                header("X-Secret", newHashSet("1", "true")::contains)))
            .build();
        return logbook;
    }
}

当然,特定的库必须存在于class路径中:

<dependency>
    <groupId>org.zalando</groupId>
    <artifactId>logbook-spring-boot-starter</artifactId>
</dependency>

README.md 部分 Spring Boot Starter 说明了以下内容并提供了 table 个可配置的集成点。

Every bean can be overridden and customized if needed