序
本文主要從log4j2的角度對zap做一下小結
log4j2配置從配置檔案上看,分為如下幾個部分:
propertiesappenders filter pattern layout mdc policies SizeBasedTriggeringPolicy TimeBasedTriggeringPolicy rollover strategyloggers root logger async logger async root使用在使用上主要是考慮幾點:
log的輸入 mdc的輸入 kv結構的輸入 tracing注入log的輸出 輸出格式 json格式 指定pattern layout 輸出方式 同步 非同步 輸出地方 console file kafka/logstash等log檔案 如何rolling 如何壓縮 如何按level分檔案輸出zapzap貌似沒有檔案配置,都是透過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。
doczap
最新評論