SpringBoot项目配置拦截器打印访问日志

本文介绍了如何在SpringBoot项目中使用拦截器来打印访问日志,以便于接口调用时排查参数问题。通过继承Filter接口并重写doFilter方法,可以在请求进入Controller之前捕获并记录请求方法、参数和客户端IP。
摘要由CSDN通过智能技术生成

   项目中有时需要和外部系统对接,为了便于排查接口传参是否正确,可以新增一个拦截器打印访问日志。

  可以通过继承Filter接口,重写doFilter方法实现。将请求在进入Controller层前拦截下来,并打印出请求的方法、参数以及请求方IP。

package com.tct.ii.ucr.core.filter;

import com.tct.ii.ucr.common.BodyReaderHttpServletRequestWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
import org.springframework.util.StringUtils;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Arrays;
import java.util.Map;

/**
 * 默认的access filter
 * 主要用于调试时打印访问日志
 * 可由配置文件的配置控制在filter registry生成注册
 * @author wl
 * @date 2021/7/26
 */
@Slf4j
public class DefaultAccessFilter implements Filter {
    private static final String UNKNOWN = "unknown";

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        ServletRequest requestWrapper = null;
        try {
            HttpServletRequest request = (HttpServletRequest) servletRequest;
            String requestMethod = request.getMethod();
            log.info("请求方式:" + requestMethod + " 请求地址: " + request.getRequestURI() + "; 请求来源:" + getRealIp(request));
            if ("POST".equals(requestMethod)) {
                if (ServletFileUpload.isMultipartContent(request)) {
                    log.info("请求包含文件");
                }else {
                    requestWrapper = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值