Go语言日志库

默认的 Go Logger

package main

import (
	"log"
	"net/http"
	"os"
)

func main() {
	SetupLogger()
	simpleHttpGet("www.google.com")
	simpleHttpGet("http://www.google.com")

}

func SetupLogger() {
	logFileLocation, _ := os.OpenFile("./test.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0744)
	log.SetOutput(logFileLocation)
}

func simpleHttpGet(url string) {
	response, err := http.Get(url)
	if err != nil {
		log.Printf("Error fetching url:%s : %s", url, err.Error())
	} else {
		log.Printf("Status Code for %s : %s", url, response.Status)
		response.Body.Close()
	}
}

运行main.go,在同级目录下的test.log中显示

2023/01/28 15:05:51 Error fetching url:www.google.com : Get "www.google.com": unsupported protocol scheme ""
2023/01/28 15:06:13 Error fetching url:http://www.google.com : Get "http://www.google.com": dial tcp 31.13.95.17:80: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

Uber-go Zap

Logger和Sugared Logger

下面是实现sugared logger的代码

package main

import (
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
	"net/http"
	"os"
)

var sugarLogger *zap.SugaredLogger

func main() {
	InitLogger()
	defer sugarLogger.Sync()
	simpleHttpGet("www.baidu.com")
	simpleHttpGet("http://www.baidu.com")
}

func InitLogger() {
	writeSyncer := getLogWriter()
	encoder := getEncoder()
	core := zapcore.NewCore(encoder, writeSyncer, zapcore.DebugLevel)

	logger := zap.New(core, zap.AddCaller())
	sugarLogger = logger.Sugar()
}

func getEncoder() zapcore.Encoder {
	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)
	response, 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", response.Status, url)
		response.Body.Close()
	}
}

运行main.go,在同级目录下的test.log中显示

2023-01-28T15:56:29.104+0800	DEBUG	zap/main.go:41	Trying to hit GET request for www.baidu.com
2023-01-28T15:56:29.120+0800	ERROR	zap/main.go:44	Error fetching URL www.baidu.com : Error = Get "www.baidu.com": unsupported protocol scheme ""
2023-01-28T15:56:29.120+0800	DEBUG	zap/main.go:41	Trying to hit GET request for http://www.baidu.com
2023-01-28T15:56:29.185+0800	INFO	zap/main.go:46	Success!statusCode = 200 OK for URL http://www.baidu.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值