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

日志的格式化, 大家有什么最佳实践么

  •  
  •   DinoStray · 2020-04-01 21:11:31 +08:00 · 2973 次点击
    这是一个创建于 1704 天前的主题,其中的信息可能已经有所发展或是发生改变。

    日志样例:
    [zookeeper]node already exist: /zoo/hi

    这里的 [zookeeper] 就是我对日志内容的一种归类, 是一个 tag, 表明是 zookeeper 类的日志.

    结果我发现 [] 并不适合用在日志, 要是用 less 搜索日志, [] 会被处理为正则表达式

    日志的格式化, 大家有什么最佳实践么

    18 条回复    2020-04-02 09:39:38 +08:00
    guyeu
        1
    guyeu  
       2020-04-01 21:26:00 +08:00
    了解一下转义。。
    chendy
        2
    chendy  
       2020-04-01 21:30:31 +08:00
    zk 这类的日志没留意过…
    nginx 、tomcat 和 spring-boot 的日志,全部用自定义的 json 格式,方便用 filebeat 拉进 es
    lidlesseye11
        3
    lidlesseye11  
       2020-04-01 21:51:18 +08:00
    你这个理由......
    \[zookeeper\]
    还有,这 tag 是干啥用的?为啥要格式化啊?有啥 ELK 满足不了的需求吗
    DinoStray
        4
    DinoStray  
    OP
       2020-04-01 21:56:39 +08:00
    通过转义搜索, 我是知道的.
    可是这样很麻烦, 比如我换成 {zookeeper}, 就直接搜 {zookeeper} 就好了.
    DinoStray
        5
    DinoStray  
    OP
       2020-04-01 21:57:18 +08:00
    我的问题, 也不是怎样 在 less vi 中使用转义, 而是日志格式化, 有没有什么最佳实践可以分享
    DinoStray
        6
    DinoStray  
    OP
       2020-04-01 21:59:19 +08:00
    如果 {zookeeper} 可以节省我日后查询日志的工作量, 为什么我不一开始就用 {zookeeper}, 而是每次查询还得用一下转义那个[].
    所以我的问题, 是日志格式化的最佳实践
    DinoStray
        7
    DinoStray  
    OP
       2020-04-01 22:06:58 +08:00
    @chendy 可是有些内容, 还是给开发者看的, 不管开发过程定位问题, 还是线上故障分析. 这类给开发者看的日志, 有没有什么好的, 更易读的最佳实践
    mrytsr
        8
    mrytsr  
       2020-04-01 22:09:29 +08:00 via Android
    参见 nginx 的日志
    learningman
        9
    learningman  
       2020-04-01 22:13:50 +08:00
    日志这种东西能用就行了
    yidinghe
        10
    yidinghe  
       2020-04-01 22:17:13 +08:00
    你要是丢到 ELK 的话,格式都不重要了,反正都会被分词。这个时候的最佳实践是面向分词优化,比如说 “批量订单处理查询已支付订单,结果 30 条记录”这种,改成“批量订单处理 查询完成 status=PAID count=30”这样分多段关键字、空格隔开更好,因为搜索日志的时候就知道按照哪些关键字来查。
    mnssbe
        11
    mnssbe  
       2020-04-01 22:26:52 +08:00
    怕麻烦啊, 关机睡觉吧
    lululau
        12
    lululau  
       2020-04-01 22:38:46 +08:00
    用英文,不行汉语拼音也行,就是别用汉字
    Trim21
        13
    Trim21  
       2020-04-01 22:42:09 +08:00
    输出成 json,然后收集到 es 里
    gamexg
        14
    gamexg  
       2020-04-01 22:46:04 +08:00
    [] 使用转移可以解决

    另外我现在喜欢结构化日志。
    TimePPT
        15
    TimePPT  
       2020-04-02 00:19:32 +08:00 via Android
    直接 ES 搞定
    LouisGuo
        16
    LouisGuo  
       2020-04-02 08:47:19 +08:00
    ZSeptember
        17
    ZSeptember  
       2020-04-02 09:34:10 +08:00
    结构化
    Varobjs
        18
    Varobjs  
       2020-04-02 09:39:38 +08:00 via Android
    最佳实践就是
    1. 不要手动记错误,每个人写法不一样
    2. 同个项目多个日志文件,或者不同服务要保证能用一个 ID 串联起来,要不记再多也枉然

    格式问题,详细且一致就好,没啥最佳实践的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2734 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 09:15 · PVG 17:15 · LAX 01:15 · JFK 04:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.