共计 956 个字符,预计需要花费 3 分钟才能阅读完成。
序
本文次要从 log4j2 的角度对 zap 做一下小结
log4j2
配置
从配置文件上看,分为如下几个局部:
- properties
appenders
- filter
pattern layout
- mdc
policies
- SizeBasedTriggeringPolicy
- TimeBasedTriggeringPolicy
- rollover strategy
loggers
- root
- logger
- async logger
- async root
应用
在应用上次要是思考几点:
log 的输出
- mdc 的输出
- kv 构造的输出
- tracing 注入
log 的输入
输入格局
- json 格局
- 指定 pattern layout
输入形式
- 同步
- 异步
输入中央
- console
- file
- kafka/logstash 等
log 文件
- 如何 rolling
- 如何压缩
- 如何按 level 分文件输入
zap
- zap 貌似没有文件配置,都是通过 api 进行配置
zap 要自定义 layout 的话,须要本人定制 encoder,zap 默认反对 json 格局
- zap 能够应用 logger 的 With 办法增加全局的 field;也能够应用 Info 之类办法提供的 Field 参数动静增加 field;后者能够联合 golang 的 context 衍生出相似 log4j2 的 mdc 的成果
zap 的输入应用的是 Sink/WriteSyncer,比方要输入到 elasticsearch 或者 mq 之类,能够自定义一个 sink;zap 默认反对 console、file 输入
- 对于 log 文件的压缩以及 rolling 之类,zap 能够借助 lumberjack 作为 WriteSyncer 来实现
- 对于日志级别的过滤,能够借助 levelFilterCore;如果要按 level 分文件,能够联合 levelFilterCore 创立不同 level 的 core,而后通过 zapcore.NewTee 来连接
- 如果想要同时输入到多种不同的中央,能够应用 zapcore.NewMultiWriteSyncer 来包装成一个新的 core
小结
zap 目前貌似没有相似 log4j2 的 async 的 log,针对 layout 须要本人定制 encoder,针对输入须要本人定制 Sink/WriteSyncer,要同时输入到多种不同的中央,能够应用 zapcore.NewMultiWriteSyncer 来包装成一个新的 core。
doc
- zap
正文完