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包