跟踪Spring启动应用程序中的所有请求

时间:2015-11-02 07:12:11

标签: spring-boot interceptor

我们使用spring boot来编写RESTFul Web服务。我们的应用程序中有大量的Web服务。而新的要求现在就在这里。我的老板让我跟踪每个服务请求。 例如:如果调用登录服务,则必须使用计数,响应状态和更多详细信息来跟踪它。有办法吗?类似于拦截器的东西,它将在处理服务之后和服务响应之前调用。

2 个答案:

答案 0 :(得分:2)

Spring Boot支持servlet过滤器,允许你以与@Component相同的方式注册它们。(通过使用@Component注释类并将其放在Spring Boot将自动配置类的包中)

使用(ServletRequest req,ServletResponse res)对象来检索所需的数据。

package application.basepackage.maybeafilterspecificpackage;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;

@Component
public class SimpleLoggingFilter implements Filter {
    private final Logger logger = LoggerFactory.getLogger(SimpleLoggingFilter .class);

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        HttpServletRequest request = (HttpServletRequest) req;
        String url = request.getServletPath();
        logger.info(url + " - " + request.getMethod());
        chain.doFilter(req, res);
        logger.info(url + " - " + response.getStatus());
    }

    public void init(FilterConfig filterConfig) {}

    public void destroy() {}

}

我创建了一个映射到/ test的@RequestMapping,它只是返回一个String,我清理我的日志以便更具可读性。

这是第一次让方法抛出异常

/test - GET
/test - 500
/favicon.ico - GET
/favicon.ico - 200

然后我修复它只是返回一个字符串

/test - GET
/test - 200
/favicon.ico - GET
/favicon.ico - 200

你说话就好像你需要对你的日志更多的权力,但如果你使用嵌入式Tomcat,那么更简单的替代方案就是。

  

Spring Boot enable http requests logging

答案 1 :(得分:0)

我认为适合您的工具是Spring Boot Actuator,尤其是跟踪应用程序每个端点(以及其他内容)的请求(和响应代码)的/ metrics网址:

https://spring.io/guides/gs/actuator-service/

http://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-metrics.html