序
本文次要从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