Hutool工具类自动记录请求和响应日志

本文介绍了如何在Spring应用中使用Hutool的HttpInterceptor来自动记录每次第三方请求的URL、方法、请求体和参数,避免了手动记录请求日志的工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

每次调用第三方请求都需要手动记录请求和响应日志,可以利用hutool工具包的请求工具设置对应的拦截器,可以省去此步骤,代码如下:

package com.ninerapoint.tms.interceptor;


import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpInterceptor;
import cn.hutool.http.HttpRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.Resource;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

@Slf4j
public class HutoolInterceptor implements HttpInterceptor<HttpRequest> {
    @Override
    public void process(HttpRequest request) {
        log.info("\n【Request Url】: {}\n【Request Method】: {}\n【Request Body】: {}\n【Request Params】: {}",
                request.getUrl(), request.getMethod(), StrUtil.blankToDefault(StrUtil.str(request.bodyBytes(),
                        request.charset()), StrUtil.EMPTY), collectHttpParam(request));
    }

    private Object collectHttpParam(HttpRequest request) {
        Map<String, Object> form = request.form();
        if (CollUtil.isNotEmpty(form)){
            HashMap<String, Object> paramsMap = MapUtil.newHashMap();
            form.forEach((key, value) -> {
                if (!(value instanceof Resource)) {
                    paramsMap.put(key, Arrays.toString(new Object[]{value}));
                }
            });
            if (CollUtil.isNotEmpty(paramsMap)){
                return MapUtil.join(paramsMap, "&", "=");
            }
        }
        return StrUtil.EMPTY;
    }
}

需注意的是需要手动添加拦截器,我使用的方法是启动类添加静态代码块

static {
        GlobalInterceptor.INSTANCE.addRequestInterceptor(new HutoolInterceptor());
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值