V2版本: 改进操作界面,统一表单样式,更多工具支持批量生成,欢迎使用 到达~


文库 阅读
作者: xiaoyu 10/11 00:47:15

Go如何自定义日志log记录器?

创建一个自定的日志记录器

要想创建一个定制的日志记录器,需要创建一个 Logger 类型值。

以下示例程序展示 如何创建不同的 Logger 类型的指针变量来支持不同的日志等级。

package main

import (
	"io"
	"io/ioutil"
	"log"
	"os"
)

var (
	Trace   *log.Logger // 记录所有日志
	Info    *log.Logger // 重要的信息
	Warning *log.Logger // 需要注意的信息
	Error   *log.Logger // 非常严重的问题
)

func init() {
	file, err := os.OpenFile("/tmp/go/errors.txt",
		os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		log.Fatalln("Failed to open error log file:", err)
	}

	Trace = log.New(ioutil.Discard,
		"TRACE: ",
		log.Ldate|log.Ltime|log.Lshortfile)

	Info = log.New(os.Stdout,
		"INFO: ",
		log.Ldate|log.Ltime|log.Lshortfile)

	Warning = log.New(os.Stdout,
		"WARNING: ",
		log.Ldate|log.Ltime|log.Lshortfile)

	Error = log.New(io.MultiWriter(file, os.Stderr),
		"ERROR: ",
		log.Ldate|log.Ltime|log.Lshortfile)
}

最终调用日志

日志记录器 Info 和 Warning 都使用 stdout 作为日志输出

Error,调用Error时,这个函数会同时输出到屏幕和日志文件errors.txt内,这个文件可用自定义如加上年月日。

func main() {
	Trace.Println("I have something standard to say")
	Info.Println("Special Information")
	Warning.Println("There is something you need to know about")
	Error.Println("Something has failed")
}


文章参考:
《Go语言实践》
log包

About

Go语言自带的log包用于记录日志仍然不方便。可以通过自己创建日志记录器,很方便的给每条日志配置保存目录、日志前缀、标志。

Resources

发布

未发布任何资源
首页 我的 定制
定制咨询
微信二维码
扫一扫上面的二维码,加我为朋友。
微信扫码周一至周六服务
接定制开发需求