Based on uber-go/zap, log caching and redis/kafka sink implemented in Go
zapx ( Please read the uber-go/zap documentation first. )
Using redis sink
go get github.com/jeffzhangme/zapx
stderr := zapx.SinkURL{url.URL{Opaque: "stderr"}}
sinkUrl := zapx.SinkURL{url.URL{Scheme: zapx.SchemeRedis, Host: "127.0.0.1:6379", RawQuery: "db=0&type=list&key=log:for:test"}}
logger, _ := zapx.NewCachedLoggerConfig().AddSinks(stderr, sinkUrl).Build()
defer logger.Flush(nil)
logger.Info("key", zap.String("k", "v"))
Log example
{
"key": {
"level": "info",
"ts": 1546572659.1465247,
"k": "v"
},
"level": "info",
"ts": 1546572659.1465852
}