1-日志平台-日志规范

561 阅读2分钟

日志规范:

流程要做的事情
日志规范固定字段定义 日志格式
日志采集 落盘规则 滚动策略 采集方法
日志传输 消息队列 消费方式 Topic规范 保存时间
日志切分 采样 过滤 自定格式
日志检索 索引分割 分片设置 检索优化 权限设置 保存时间
日志流监控 采集异常 传输异常 检索异常 不合规范 监控报警

日志类型:

logback和log4j2

结论:统一使用logback。

关于二者的区别,这里不做评比,网上一堆的评比讲解。

让线上那么多在运行的项目因为这么一点点的性能差异,而且还是log4j2自己吹出来的,并不是实战的结果就做一个打印日志方式的迁移,至少目前看来有点不切实际好高骛远

logback的pattern

appName和instance等基础的信息不再logback里面配置

原因是:交付给使用方的东西,依赖越少越好,尽可能的在中间层实现(就好比容器的基础参数,会在采集器里面实现)

<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} |%thread |%level |%logger |%class#%method:%line |%mdc{traceId:--} |%replace(%msg){'\|','-'}%n </pattern>

哪个配置参数因为性能问题不能打,但是要把 | 分隔符留下用 - 代替,例如:不想打:%class#%method:%line

<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} |%thread |%level |%logger |- |%mdc{traceId:--} |%replace(%msg){'\|','-'}%n </pattern>

尽可能用单词,让别人也能看懂,咱们用到的参数讲解,像${PID}说是父线程ID这种搞不懂的洋文化,弄清楚再添加

logback.qos.ch/manual/layo…

conversion wordeffect描述 
```
%date{yyyy-MM-dd HH:mm:ss.SSS}
| %thread                                | --                           | 排查问题要用到的线程ID                            |                                                                   |
| %level                                 | --                           | 展示当前日志的级别,不同级别在后续的告警模块至关重要              |                                                                   |
| %logger                                | **logger**{<!-- -->*length*} | length不配置,原因展示最全的logName                | *输出日志的logger名,可有一个整形参数,功能是缩短logger名,设置为0表示只输入logger最右边点符号之后的字符串。* |
| ```
%class#%method:%line
```           | --                           | %class#%method:%line--组合使用,快速定位是哪一行除了问题 | *输出执行记录请求的调用者的全限定名。尽量避免使用,除非执行速度不造成任何问题。(例如:WARN级别打开)*            |
| ```
%mdc{traceId:--}
```               | --                           | 获取traceId,链路追踪                          |                                                                   |
| ```
%replace(%msg){'\|','-'}
```       | --                           | 这个replace是因为 \| 在日志格式中有重要的作用            |                                                                   |
| %n                                     | --                           | --                                      |                                                                   |

样例:

最全的

| `2021``-``04``-``28` `18``:``20``:``46.357` `\|my-grpc-executor-``5` `\|WARN \|grpc-access-logger \|com.xueqiu.infra.spring.grpc.server.MetricsServerInterceptor$MetricsCall#close:``56` `\|3bca40cd916c7f5e \|SLOW helloworld.Greeter.SayHello[name: ``"name"``,]-2688ms-/``192.168``.``18.128``:``64320``-Status{code=OK, description=``null``, cause=``null``}` |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

去除:%class#%method:%line 的

| `2021``-``04``-``28` `18``:``20``:``46.357` `\|my-grpc-executor-``5` `\|WARN \|grpc-access-logger \|- \|3bca40cd916c7f5e \|SLOW helloworld.Greeter.SayHello[name: ``"name"``,]-2688ms-/``192.168``.``18.128``:``64320``-Status{code=OK, description=``null``, cause=``null``}` |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |