首页 > 解决方案 > 日志记录执行器健康调用,即使被排除在外

问题描述

我正在将 Zolando Logbook 用于 Spring Boot 服务(版本 2.1.6 spring boot 版本,1.13.0 Logbook 版本),并且执行器健康端点被记录,即使它被指定为排除。包含在 yaml 文件中时,其他端点被正确排除。

这是 yaml 文件的相关部分:

logbook:
  exclude:
    - /actuator/health
    - /actuator/**
    - /health
    - /v2/api-docs
    - /swagger-ui.html

标签: spring-bootspring-boot-actuatorlogbook

解决方案


我遇到了类似的问题,所以我想与任何处于相同情况的人分享我的解决方案,他们试图在 Spring Boot 中使日志与 log4j2 一起工作

确保您在pom.xml中具有正确的依赖项

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
        <groupId>org.zalando</groupId>
        <artifactId>logbook-spring-boot-starter</artifactId>
        <version>${logbook.version}</version>
</dependency>

通过在src/main/resources中创建log4j2.xml文件来 配置 log4j

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="info">
    <Appenders>
        <Console name="Console_Appender" target="SYSTEM_OUT">
            <PatternLayout
                pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
        </Console>
        <RollingFile name="logbook-logToFile" fileName="logs/logbook.log"
            filePattern="${APP_LOG_ROOT}/app-trace-%d{yyyy-MM-dd}-%i.log" >
            <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="19500KB" />
            </Policies>
            <DefaultRolloverStrategy max="1"/>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="org.zalando.logbook.Logbook" level="trace" additivity="false">
            <AppenderRef ref="Console_Appender"/>
            <AppenderRef ref="logbook-logToFile"/>
        </Logger>
        <Root level="info">
            <AppenderRef ref="Console_Appender" />
            <AppenderRef ref="logbook-logToFile"/>
        </Root>
    </Loggers>
</Configuration>

此配置将所有内容输出到控制台以及指定文件中。(您还可以使用此处描述的 yaml、json 或编程配置:https ://logging.apache.org/log4j/2.x/manual/configuration.html )

要配置日志(例如从日志中排除一些端点),只需创建一个像这样的配置类:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.zalando.logbook.Logbook;
import static org.zalando.logbook.Conditions.exclude;
import static org.zalando.logbook.Conditions.requestTo;

@Configuration
public class LogbookConfiguration {

    @Bean
    public Logbook logbook() {
        Logbook logbook = Logbook.builder()
            .condition(exclude(
                requestTo("/actuator/**"),
                requestTo("/admin/**")))
            .build();
        return logbook;
    }

}

(我很难找到这些静态导入,因为我的 IDE 不会在这里提出任何建议)

这只是基本设置,您可以在日志文档中找到更深入的信息:https ://github.com/zalando/logbook#conditional


推荐阅读