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

Java 后端记录每一次请求,有相关的开源框架吗

  •  
  •   t202201 · 2022-12-13 11:54:40 +08:00 · 5642 次点击
    这是一个创建于 718 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前有需求记录用户的每一次请求,并且需要存数据库,有什么开源项目推荐吗

    44 条回复    2023-01-30 16:32:26 +08:00
    me221
        1
    me221  
       2022-12-13 12:01:08 +08:00
    AOP ?
    aoboco
        2
    aoboco  
       2022-12-13 12:12:09 +08:00
    直接写到文件。然后 fluent 收集
    karott7
        3
    karott7  
       2022-12-13 12:12:50 +08:00 via iPhone
    这还存数据库? aop 记录到日志看不就好了
    t202201
        4
    t202201  
    OP
       2022-12-13 12:15:34 +08:00
    @me221 有什么开箱即用的框架不
    t202201
        5
    t202201  
    OP
       2022-12-13 12:16:35 +08:00
    @karott7 业务需求要持久化存数据库呀
    kyuuseiryuu
        6
    kyuuseiryuu  
       2022-12-13 12:16:40 +08:00 via iPhone
    Spring 啊🥲
    xiang0818
        7
    xiang0818  
       2022-12-13 12:32:50 +08:00   ❤️ 2
    /**
    * Http 请求日志记录
    */
    public class HttpFilter extends OncePerRequestFilter {
    bk201
        8
    bk201  
       2022-12-13 12:38:13 +08:00
    最好是写入文件后,自己抓取后写入数据库。比如 2L 的 fluent 收集
    ricky077
        9
    ricky077  
       2022-12-13 12:58:50 +08:00
    自定义拦截器不行吗?
    ltxlouis
        10
    ltxlouis  
       2022-12-13 13:01:19 +08:00
    [logbook]( https://github.com/zalando/logbook) 可以看看这个
    cslive
        11
    cslive  
       2022-12-13 13:41:07 +08:00
    log4j 日志保存到数据库
    thetbw
        12
    thetbw  
       2022-12-13 13:43:04 +08:00
    这要啥框架,拦截器记录到日志不就行了。如果需要查询,再把日志推到那些查询工具里
    wizzer
        13
    wizzer  
       2022-12-13 13:45:29 +08:00
    janus77
        14
    janus77  
       2022-12-13 13:45:41 +08:00
    直接找个 log 库,然后 log 自己写进文件或者数据库就完事了呗
    blankmiss
        15
    blankmiss  
       2022-12-13 13:54:04 +08:00
    怎么什么都用框架 你每一次请求直接拦截就行了 在拦截的时候做处理操作 不管你是存数据库还是存缓存
    huajia2005
        16
    huajia2005  
       2022-12-13 13:54:12 +08:00
    自定义注解,然后 aop 异步写入数据库,一般项目这种就可以了,大项目就另说了
    pannanxu
        17
    pannanxu  
       2022-12-13 14:01:41 +08:00
    流量高就日志收集,不然就直接 Filter 直接入库
    Vkery
        18
    Vkery  
       2022-12-13 14:51:49 +08:00
    只是记录请求时间 请求地址 响应时长之类的 解析 accsee_log 就行了
    如果需要对应的入参 返回值 用户信息之类的 大概就需要用 aop 或者 filter 里做处理了
    zoyua
        19
    zoyua  
       2022-12-13 15:33:50 +08:00
    这个不需要参考啥开源项目吧,直接拦截存库里就行吧,不过我们业务目前是存 sls 上的
    otakustay
        20
    otakustay  
       2022-12-13 15:55:41 +08:00
    前面架个 nginx 吐日志,再用 fluentd 或者 filebeat 的收集起来入库
    imaple
        21
    imaple  
       2022-12-13 15:58:01 +08:00
    AOP 异步写日志+ELK
    imaple
        22
    imaple  
       2022-12-13 15:58:18 +08:00
    感觉是在做审计相关?
    meeop
        23
    meeop  
       2022-12-13 15:58:38 +08:00
    咋啥都要开源框架啊,自己写一个功能不行吗
    Goooooos
        24
    Goooooos  
       2022-12-13 16:03:26 +08:00
    几年前流行的 ELK
    witcherhope
        25
    witcherhope  
       2022-12-13 16:06:29 +08:00
    说实话几分钟就能写出来的东西
    w292614191
        26
    w292614191  
       2022-12-13 16:10:02 +08:00
    @Goooooos #24 现在流行啥,spirngcloud 用啥收集比较好。
    MX123
        27
    MX123  
       2022-12-13 16:13:47 +08:00
    可以问一下 ChatGPT:
    “是的,Java 后端开发中有许多用于记录请求的开源框架。例如,您可以使用 Apache Log4j 来记录每一次请求。Log4j 是一个强大的日志记录框架,提供了丰富的日志记录功能,并具有高度可配置性。您也可以使用 Slf4j ,它是一个日志抽象层,可以与各种日志实现(如 Log4j ,Logback 等)配合使用。此外,还有许多其他的日志记录框架,您可以根据项目的需要选择适合的框架。”
    amlee
        28
    amlee  
       2022-12-13 16:15:16 +08:00
    这种需求任何框架都能满足吧,根本不必要有所谓单独的开箱即用的框架来实现
    wxw752
        29
    wxw752  
       2022-12-13 16:15:20 +08:00
    先写到本地,filebeat 异步存到 ELK
    amlee
        30
    amlee  
       2022-12-13 16:15:52 +08:00
    @MX123 你是想被站长 ban 掉么。。。
    MX123
        31
    MX123  
       2022-12-13 16:21:34 +08:00
    @amlee 我又没有批量发,而且这里问题问 ChatGPT 可能更快的得到答案。
    MX123
        32
    MX123  
       2022-12-13 16:21:47 +08:00
    @MX123 这类问题
    git00ll
        33
    git00ll  
       2022-12-13 16:27:38 +08:00
    filter
    litchinn
        34
    litchinn  
       2022-12-13 17:32:29 +08:00
    1. logback 有 DBAppender
    2. 如果需要自定义日志内容请参考[美团的这篇文章]( https://tech.meituan.com/2021/09/16/operational-logbook.html)
    3. 如果有条件建议上 loki ,有 docker-plugin ,集成方便。
    loshine1992
        35
    loshine1992  
       2022-12-13 17:43:07 +08:00
    AOP + LOG 库啊。。
    ecric
        36
    ecric  
       2022-12-13 18:18:00 +08:00
    你只说记录请求没有说记录之后干嘛用啊
    fengpan567
        37
    fengpan567  
       2022-12-13 18:37:27 +08:00
    加点钱,直接 aop+elk
    xuanbg
        38
    xuanbg  
       2022-12-13 21:53:32 +08:00
    AOP 把请求数据输出到日志就好了吧?我是在网关上做的,docker 容器输出的日志到 fluentd ,再转发到 ES 存储起来。基本上开箱即用。百度一下 EFK 就行了。
    Nnq
        39
    Nnq  
       2022-12-14 01:53:04 +08:00
    或者你可以用 opentelemetry
    lux182
        40
    lux182  
       2022-12-14 09:41:52 +08:00
    探针 比如 skywalking
    LeegoYih
        41
    LeegoYih  
       2022-12-14 13:31:50 +08:00
    qinxi
        42
    qinxi  
       2022-12-14 21:33:47 +08:00
    用 spring 的话 spring 自带的 CommonsRequestLoggingFilter 就行, 不用自己处理流复制. 只不过没有入库的 不过请求日志都有了. 怎么写都可以, log4j2 直通队列, 或者写文件走 efk
    alienx717
        43
    alienx717  
       2023-01-03 22:48:15 +08:00
    @MX123 哈哈哈,这东西越来越聪明,最后大家都失业了 :》
    cco
        44
    cco  
       2023-01-30 16:32:26 +08:00
    pinpoint
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2619 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:33 · PVG 19:33 · LAX 03:33 · JFK 06:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.