执行器基本路径存储了什么包?

x6492ojm  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(338)

我期待着记录我的 Spring 启动项目的所有要求。我的切入点可以很好地用于编程,我可以得到子路径,但不能得到基本的执行器路径。
com.example.demo…(…)-这适用于我的编程
org.springframework.boot.actuate…(…)-这适用于如下路径http://localhost:8080/致动器/信息或http://localhost:8080/致动器/健康。这很管用
我的切入点都不是为了http://localhost:8080/致动器“无其他路径。我试着通过org.springframework.boot.actuate路径和actuator jar查看是否遗漏了路径,但找不到任何东西。我查看了org.springframework.boot.actuate.autoconfigure,但这似乎不对。
我只需要捕获它并记录请求,但是我找不到http://localhost:8080/致动器
谢谢

mf98qq94

mf98qq941#

您可以通过定义 Filter 班级。它也起作用 /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
    }
}
ymdaylpp

ymdaylpp2#

使用执行器 HttpTraceFilter 记录细节。您可以将详细信息记录到文件中或直接记录到数据库中。
inmemory存储库示例

@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);
    }
}
vuktfyat

vuktfyat3#

为了省去别人的麻烦。
服务的班级http://yourhost:8080/致动器基座路径为
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行(在当前版本中)。不幸的是,它是一个非公共的内部类,SpringAOP似乎无法找到它。
因此,如果您能够,可能上面的过滤器答案是好的,但是执行spring aop不能直接与该类冲突。不幸的是,过滤器在我的情况下可能不起作用,但其他人可能会很高兴得到这些信息。

相关问题