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包