各位是怎么打印封装第三方 api 的出入参日志的呢 - V2EX
zhongpingjing
0D
V2EX    Java

各位是怎么打印封装第三方 api 的出入参日志的呢

  •  
  •   zhongpingjing Sep 30, 2021 2816 views
    This topic created in 1686 days ago, the information mentioned may be changed or developed.
    之前是每个封装的 http 请求的方法都手动 log.info 去打印,感觉模版代码有点多

    现在改用 RestTemplate 的拦截器机制,在拦截器里打印 request 跟 response,但是也发现有个问题,就是 response 的流被消费一次后,后面去获取 response 就会是空,通过复制一遍流(和使用 BufferingClientHttpRequestFactory )解决了。但是这样又有一个问题,这样会有性能损失,而且大 response 复制一遍会占用很多内存吧。

    想请教各位平时是怎么打印第三方 api 的出入参的
    7 replies    2021-10-03 01:02:23 +08:00
    thetbw
        1
    thetbw  
       Sep 30, 2021
    用切片在方法上拦截,记录方法入参和返回值?
    方法上没有标注的一般也是不重要的参数吧,如果是 token 之类的参数也需要记录,可以通过线程上下文来获取
    shanghai1943
        2
    shanghai1943  
       Sep 30, 2021
    如果是出参里的 response entity 的话,可以试试 toString 后,返回 string 类型的数据,而不是返回流。
    zhongpingjing
        3
    zhongpingjing  
    OP
       Sep 30, 2021
    @shanghai1943 repsonse.getBody()就只返回流。。能返回 response entity 的话,已经走完拦截器了
    zhongpingjing
        4
    zhongpingjing  
    OP
       Sep 30, 2021
    @thetbw 切片好像没办法完全满足,有一些不在方法的参数,也不在上下文
    thetbw
        5
    thetbw  
       Oct 1, 2021
    @zhongpingjing 那你这就是框架设计的问题了呀,http 协议本来也就没什么东西,非要自己把情况搞复杂。还能用 请求头传数据的吗,请求头的数据也是可以拿到的呀
    sprite82
        6
    sprite82  
       Oct 1, 2021 via Android
    自己封装一个 httpclientutil,也就 get post,表单 json 两种入参,没几个方法,然后都用这 util 打印
    zhongpingjing
        7
    zhongpingjing  
    OP
       Oct 3, 2021
    @thetbw request 还好,主要是 response
    About     Help     Advertise     Blog     API     FAQ     Solana     1280 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 23:49 PVG 07:49 LAX 16:49 JFK 19:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86