V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sinnosong1
V2EX  ›  Java

SpringBoot 中如何记录调用外部接口的操作日志?

  •  
  •   sinnosong1 ·
    SinnoSong · 2022-02-18 12:20:48 +08:00 · 2769 次点击
    这是一个创建于 769 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 httpclient 调用外部接口时,如何记录接口调用时长,调用接口 uri 、method 、传入参数、接口响应?

    第 1 条附言  ·  2022-02-23 14:11:03 +08:00
    该问题已完结,现在是自己写了个包装方法,包装 httpClient 的 execute 方法,再通过 aop 获取 request 和 response 中的各种信息。
    13 条回复    2022-02-19 17:39:45 +08:00
    xuanbg
        1
    xuanbg  
       2022-02-18 12:25:02 +08:00
    搞一个 HttpHelper ,对外暴露几个请求方法,在里面打日志就可以了。
    zgc27wo
        2
    zgc27wo  
       2022-02-18 12:35:06 +08:00
    或者忽略 httpclient ,直接切面打日志或者设计为按注解切面打日志还更灵活通用一点.
    sinnosong1
        3
    sinnosong1  
    OP
       2022-02-18 12:48:45 +08:00
    @zgc27wo 我自己的想法也是 加注解然后切面打日志,但是不知道要怎么拦截发送的 request 请求,然后获取想要的那些数据
    potatowish
        4
    potatowish  
       2022-02-18 13:01:14 +08:00
    写一个 okhttp 拦截器 HttpLoggingInterceptor ,级别设成 BODY
    wolfie
        5
    wolfie  
       2022-02-18 14:40:15 +08:00
    有 RequestInterceptor 、ResponseInterceptor ,没给环绕的。

    手动创建然后交给 spring 管理,上 aop 环绕切 execute 。
    dqzcwxb
        6
    dqzcwxb  
       2022-02-18 14:46:47 +08:00
    建议从 nginx 或者 tomcat 入手,项目本身增加这个功能意义不大
    sprite82
        7
    sprite82  
       2022-02-18 16:00:33 +08:00
    封装一个 httpclientUtils
    thetbw
        8
    thetbw  
       2022-02-18 16:19:27 +08:00
    自己封装个 http 工具
    issakchill
        9
    issakchill  
       2022-02-18 16:50:49 +08:00
    之前项目逼于无奈用了 forest 这个 http 客户端框架 日志功能挺全的
    貌似 feign 的日志也可以
    warcraft1236
        10
    warcraft1236  
       2022-02-18 16:57:43 +08:00
    使用 okhttp ,他自己就有 logging 这个功能,非要用 httpclient 的话,直接上 aop ,记录所有请求
    cppc
        11
    cppc  
       2022-02-18 17:55:02 +08:00 via iPhone
    BQsummer
        12
    BQsummer  
       2022-02-18 18:16:39 +08:00
    用 okhttp ,写 Interceptor 打印 httpout 日志
    sinnosong1
        13
    sinnosong1  
    OP
       2022-02-19 17:39:45 +08:00
    @warcraft1236 请问 aop 的话,要怎么实现?我现在是用 httpclient 的拦截器做的。aop 实现不知道要在哪里切入,能给点指导嘛?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3161 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 12:31 · PVG 20:31 · LAX 05:31 · JFK 08:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.