Spring boot 在调用/运行状况时添加日志

Spring boot 在调用/运行状况时添加日志,spring-boot,spring-boot-actuator,health-monitoring,Spring Boot,Spring Boot Actuator,Health Monitoring,我开发了一个应用程序spring boot,我用它来提供健康指示器。问题是,我必须开发一个定制的运行状况,当我调用/health时,我需要记录该端点的返回 我创建了一个端点/health bis,它调用/health并记录它的响应。但问题是当服务不可用/运行状况返回http代码503时 你有什么想法吗 致以最诚挚的问候您可以创建一个过滤器并注册它 RequestDumperFilter将记录对筛选端点的请求/响应。它非常冗长,所以您可能想创建自己的过滤器,但这是一个好的开始 @Bean publ

我开发了一个应用程序spring boot,我用它来提供健康指示器。问题是,我必须开发一个定制的运行状况,当我调用/health时,我需要记录该端点的返回

我创建了一个端点/health bis,它调用/health并记录它的响应。但问题是当服务不可用/运行状况返回http代码503时

你有什么想法吗


致以最诚挚的问候

您可以创建一个过滤器并注册它

RequestDumperFilter将记录对筛选端点的请求/响应。它非常冗长,所以您可能想创建自己的过滤器,但这是一个好的开始

@Bean
public FilterRegistrationBean requestDumperFilter()
{
    FilterRegistrationBean registration = new FilterRegistrationBean();
    Filter requestDumperFilter = new RequestDumperFilter();
    registration.setFilter(requestDumperFilter);
    registration.addUrlPatterns("/*");
    return registration;
}

我有同样的任务,并通过覆盖原始的org.springframework.boot.actuate.health.HealthEndpoint解决了它。我只是简单地创建了一个定制的:

@Slf4j
@Component
@Endpoint(id = "health")
public class CustomHealthEndpoint extends HealthEndpoint {

    public CustomHealthEndpoint(HealthAggregator healthAggregator,
                                HealthIndicatorRegistry registry) {
        super(new CompositeHealthIndicator(healthAggregator, registry));
    }

    @Override
    @ReadOperation
    public Health health() {
        Health health = super.health();
        log.debug("Health status details: {}", health);
        return health;
    }
}

现在在我的日志中,每当我打电话给/health时,我都可以看到完整的状态日志消息。

谢谢@jfneis我尝试了你的解决方案,但问题是过滤器调用了starrtup。当我呼唤健康时,什么都没有happen@Victor奇怪的是,在我的应用程序中,对每个端点的每个调用都记录在正文、标题等中。。您是否在您的配置类中声明了这个bean?是的,我声明为与您的example@Victor你能更新你的问题吗?到目前为止,你在日志上看到了什么?我会在这里和我的输出进行比较。你有试过的代码吗?!你能分享全部例外吗?!