actuator base path存放的是什么包?

What package is the actuator base path stored?

我希望记录我所有的 Spring-Boot 项目请求。我的切入点适合我的编程,我可以获得子路径,但不是基本执行器路径。

None 我的切入点仅适用于“http://localhost:8080/actuator”,没有其他路径。我已经尝试通过 org.springframework.boot.actuate 路径和执行器罐查看我是否错过了路径,但我找不到任何东西。我查看了 org.springframework.boot.actuate.autoconfigure,但这似乎不对。

我只需要捕获它并记录请求,但是我找不到 http://localhost:8080/actuator

谢谢

您可以通过定义 Filter class 来记录所有请求。它也适用于 /actuator 请求。

import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

// Run as first filter
@Order(Ordered.HIGHEST_PRECEDENCE)
@Component
public class LogFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        System.out.println(httpRequest.getMethod() + " - " + httpRequest.getRequestURI());
        chain.doFilter(request, response);
        // do anything after response
    }
}

使用 Actuator HttpTraceFilter 记录详细信息。您可以将详细信息记录在文件中或直接记录到数据库中。

示例内存存储库

@Repository
public class CustomTraceRepository extends InMemoryTraceRepository {

    private static final Logger log = LoggerFactory.getLogger(CustomTraceRepository.class);

    public CustomTraceRepository() {
        super.setCapacity(200);
    }

    @Override
    public void add(Map<String, Object> map) {
        super.add(map);

        log.info("traced object: {}", map);
    }
}

省去别人的麻烦。

服务于http://yourhost:8080/actuator基本路径的class是

https://github.com/spring-projects/spring-boot/blob/0a4c26532dff6f3fa1bf6d2e1c2a74549191117a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/web/servlet/WebMvcEndpointHandlerMapping.java

处理页面的程序在第 76 行左右(当前版本)。不幸的是,它是一个内部 class 而不是 public 并且 Spring AOP 似乎无法找到它。

因此,如果可以的话,上面的过滤器答案可能很好,但是执行 Spring AOP 不能直接违背 class。不幸的是,过滤器在我的情况下可能不起作用,但其他人可能会很高兴获得此信息。