官方 Log 包
方法
- 输出到 logger.out:
log.Print()
,log.Printf()
,log.Println()
- 输出到 logger.out, 再执行 os.Exit(1):
log.Fatal()
,log.Fatalln()
,log.Fatalf()
- 输出到 logger.out, 再执行 panic():
log.Panic()
,log.Panicln()
,log.Panicf()
logger 结构体
type Logger struct {
mu sync.Mutex // ensures atomic writes; protects the following fields
prefix string // 日志前缀
flag int // 日志格式
// 0 空
// 1 年月日
// 2 时分秒
// 3 1+2 默认, 一般情况下用这个即可
// 4 时分秒+毫秒
// 5 年月日+时分秒+毫秒
out io.Writer // 输出位置
buf []byte // for accumulating text to write
}
使用示例
- 打印到终端(默认)
package main
import "log"
func main() {
log.Print("abc")
}
- 打印到文件
package main
import (
"log"
"os"
)
func main() {
// 打开一个文件作为日志文件
logFile, _ := os.OpenFile("xx.log", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, os.ModePerm)
defer logFile.Close()
log.SetOutput(logFile)
// log.SetPrefix("[thc] ") // 一般情况下不需要设置, 使用默认即可
// log.SetFlags(3) // 一般情况下不需要设置, 使用默认即可
log.Print("xxx")
// 单独生成一个 log.Logger, 效果同上
logger := log.New(logFile, "[thc] ", 3)
logger.Print("xxx")
}