V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fanyingmao
V2EX  ›  问与答

你们做服务端会对接口的入参和结果做日志吗?

  •  
  •   fanyingmao · 2021-03-27 12:13:46 +08:00 · 2824 次点击
    这是一个创建于 1337 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原本用的框架自带接口入参与返回日志,但接手的人把框架自带的日志注释掉了,理由是每条都记录消耗服务器 io 性能和占磁盘。

    还有就是估计对框架不了解,没用上框架自带的环境变量启动选择配置,而采用直接替换配置文件的方式。

    还有就是代码没用 eslint,有些 es5 和 es6 语法混用。

    见过好多二手代码了,感觉做游戏后台开发是不是比应用后台开发更没资料参考,没参考资料就好多自由发挥的奇技淫巧。

    21 条回复    2021-03-29 10:39:50 +08:00
    XiLingHost
        1
    XiLingHost  
       2021-03-27 12:21:13 +08:00
    配置 loglevel 不就好了?嫌每条都记录就把这个记录配成 DEBUG 级别的,然后生产环境别开这个级别就好了啊
    fanyingmao
        2
    fanyingmao  
    OP
       2021-03-27 12:27:10 +08:00
    @XiLingHost 框架自带了这个功能,但是之前的人没用。还有就是我感觉日志应该不会消耗那么多性能,我还是想每个接口都做日志,有日志线上问题也比较好排查。
    PerFectTime
        3
    PerFectTime  
       2021-03-27 12:27:21 +08:00
    做了,无日志排查问题很难受的。
    有入参和结果方便对用户操作过程复现
    yuanmomo
        4
    yuanmomo  
       2021-03-27 12:31:40 +08:00 via iPhone
    接口的地方,必须要加,不然查问题要哭
    EminemW
        5
    EminemW  
       2021-03-27 12:37:40 +08:00 via iPhone
    日志打得不好确实会有所影响
    fanyingmao
        6
    fanyingmao  
    OP
       2021-03-27 12:40:47 +08:00
    @yuanmomo
    @PerFectTime
    没日志开发非常累,上家就是没打接口日志,这家又给我碰上了,我都要以为不打接口日志是普遍现象了。
    BeautifulSoap
        7
    BeautifulSoap  
       2021-03-27 13:14:29 +08:00 via Android
    不打日志,生产环境出 bug 和问题了排查起来能让你哭
    sujin190
        8
    sujin190  
       2021-03-27 14:04:13 +08:00
    返回不过可以,但是入参不做,出问题完全不知道啥情况了
    nicebird
        9
    nicebird  
       2021-03-27 15:04:21 +08:00
    日志非常耗资源的,出于性能考虑关掉日志是很正常的行为。
    应该开启 loglevel,开发时候打开低级别的日志,线上环境关掉。
    vcode
        10
    vcode  
       2021-03-27 15:11:10 +08:00
    楼上说的很对
    dzdh
        11
    dzdh  
       2021-03-27 15:14:31 +08:00
    搭个车问一下日志怎么记录的?

    公共输入输出好说中间件过滤器啥的拦截顺手写一下就行了。

    但是像那些三方接口输出、传递参数、程序中中间变量值是一个个挨个手写 Logger.info.还是也有啥统一方法
    limuyan44
        12
    limuyan44  
       2021-03-27 15:18:47 +08:00
    对于稳定运行的系统关掉不必要的日志是必须的,当然你要是不缺那点性能的话打到 debug 也没问题。
    fanyingmao
        13
    fanyingmao  
    OP
       2021-03-27 15:48:15 +08:00
    @limuyan44 初创小项目基本就不缺性能,缺的是用户,而且用户上来了,服务器才多少钱。就现在线上运行的项目 cpu 消耗不到 10% 。我是倾向于用性能换排查的工作量的。
    abcbuzhiming
        14
    abcbuzhiming  
       2021-03-27 21:07:51 +08:00
    线上环境里你敢随便开日志打印,还说不影响性能?

    这么说吧,你觉得打印日志不影响性能,那你有没有想过为什么现在后端的主要性能瓶颈全部在数据库那边?

    你把所有接口的请求和返回全部打日志,你做的事情和数据库有什么两样?
    abcbuzhiming
        15
    abcbuzhiming  
       2021-03-27 21:13:12 +08:00
    @fanyingmao 朋友,打印日志消耗的是 IO 性能啊。而且我是真不知道,你们的初创项目业务很复杂吗?复杂到必须每个请求和返回都必须打日志才能找到原因?据我所知大部分的初创项目,排查问题都是临时加加日志,解决了问题再去掉,断没有所有请求和返回都打日志的做法。

    所有请求和返回都打日志,只有当项目足够大,需要做风控的时候,才会考虑采取这个策略,而且别人也会专门考虑使用旁路流量方式记录日志来不影响线上服务。框架给你的那个接口入参和返回日志是方便你调试的,绝不是给你放那常开的
    fanyingmao
        16
    fanyingmao  
    OP
       2021-03-27 21:37:15 +08:00
    @abcbuzhiming 记录日志分文件记录比数据库分库设计实现简单多了,正常我做游戏的框架自带分布式,可以分在多台机子上做对应进程的日志,io 瓶颈是很容易控制的,还有如果用 nginx 的日志功能,nginx 也是每个请求都做日志,不知道又没人用 nginx 碰到 io 瓶颈情况。

    还有就是做游戏,总有玩家经常会说什么活动任务奖励没领到之类的情况,有日志就好跟踪玩家操作,可以判定是玩家误操作还是 bug 。
    necodba
        17
    necodba  
       2021-03-27 22:21:07 +08:00 via iPhone
    @fanyingmao 赞同。另外说一句,我觉得这个和应用也有关系,比如之前做游戏和做站点,日志需求完全就不一样
    zjp
        18
    zjp  
       2021-03-27 22:52:04 +08:00
    日志是顺序写的,性能一点都不差。讲究的话也有异步的方式
    BQsummer
        19
    BQsummer  
       2021-03-28 11:15:24 +08:00 via Android
    我们公司把 info 级别的日志行号去掉了,据说性能更好
    raaaaaar
        20
    raaaaaar  
       2021-03-29 08:38:48 +08:00 via Android
    日志级别不就做这个事么
    ERRASYNCTYPE
        21
    ERRASYNCTYPE  
       2021-03-29 10:39:50 +08:00
    异步扔进 mq
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   969 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 20:16 · PVG 04:16 · LAX 12:16 · JFK 15:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.