go实现zap logger
Zap logger
2021年5月7日
23:17
定制的Sugared Logger
学习网址:https://www.liwenzhou.com/posts/Go/zap/
代码:
package main
import (
"net/http"
"os"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
var sugarLogger *zap.SugaredLogger
func main() {
InitLogger()
defer sugarLogger.Sync() // 将 buffer缓存 中的日志写到文件中
simpleHttpGet("www.baidu.com")
simpleHttpGet("http://www.baidu.com")
}
//初始化一个logger
func InitLogger() {
// logger, _ := zap.NewProduction() //zap.NewProduction()/zap.NewDevelopment()或者zap.Example(),区别在于它将记录的信息不同
// sugarLogger = logger.Sugar()
writeSyncer := getLogWriter()
encoder := getEncoder()
core := zapcore.NewCore(encoder, writeSyncer, zapcore.DebugLevel)
//添加将调用函数信息记录到日志中的功能
logger := zap.New(core, zap.AddCaller())
sugarLogger = logger.Sugar()
}
func getEncoder() zapcore.Encoder {
//覆盖默认的ProductionConfig()
//修改时间编码器
//在日志文件中使用大写字母记录日志级别
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
return zapcore.NewConsoleEncoder(encoderConfig)
}
//创建保存日志的文件
func getLogWriter() zapcore.WriteSyncer {
file, _ := os.Create("./test.log")
return zapcore.AddSync(file)
}
func simpleHttpGet(url string) {
sugarLogger.Debugf("Trying to hit GET request for %s", url)
resp, err := http.Get(url)
if err != nil {
sugarLogger.Errorf("Error fetching URL %s : Error = %s", url, err)
} else {
sugarLogger.Infof("Success! statusCode = %s for URL %s", resp.Status, url)
resp.Body.Close()
}
}
创建同级的test.log文件并记录日志信息如下:
2021-05-07T23:15:15.992+0800 DEBUG GoZap/main.go:49 Trying to hit GET request for www.baidu.com 2021-05-07T23:15:16.009+0800 ERROR GoZap/main.go:52 Error fetching URL www.baidu.com : Error = Get "www.baidu.com": unsupported protocol scheme "" 2021-05-07T23:15:16.009+0800 DEBUG GoZap/main.go:49 Trying to hit GET request for http://www.baidu.com 2021-05-07T23:15:16.068+0800 INFO GoZap/main.go:54 Success! statusCode = 200 OK for URL http://www.baidu.com

浙公网安备 33010602011771号