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

2020-04-01 21:11:31 +08:00
 DinoStray

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

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

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

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

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

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

格式问题,详细且一致就好,没啥最佳实践的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/658447

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX