go std log
log 是 go 标准库中内置的日志包,其实现非常简单,也非常的简单易用
// 可以通过 SetXxx 来设置 prefix/output/flags
type Logger struct {
mu sync.Mutex // 保证写操作的原子性,在并发中保护 Logger 中其他的字段
prefix string // 日志的前缀,但其位置也是可以调整的
flag int // 用于设置日志输出的格式
out io.Writer // 设置日志输出到哪里
buf []byte // 用于缓冲日志信息
isDiscard int32 // 是否丢弃?
}
log 包中的函数 --- 会调用包内的 std,其本质是个 Logger,output 指向 os.Stderr
var std = New(os.Stderr, "", LstdFlags)
Fatal/Fatalf/Fatalln
Panic/Panicf/Panicln
Print/Printf/Println
Logger 方法 --- 所有的方法都是并发安全的
Fatal/Fatalf/Fatalln
Panic/Panicf/Panicln
Print/Printf/Println
Logger 可以通过 New 或着 Default 来获得
const (
Ldate = 1 << iota // 当地时间格式(年月日)2009/01/23
Ltime // 当地时间格式(时分秒)01:23:23
Lmicroseconds // 显示微秒 01:23:23.123123(设置该 flag 后,Ltime 也会被设置)
Llongfile // 显示文件全称和日志执行的位置(在哪一行) /a/b/c/d.go:23
Lshortfile // 打印日志的文件名和执行位置 d.go:23(如果设置了会覆盖 Llongfile)
LUTC // 如果 Ldate 或 Ltime 已经设置了,就是用 UTC (协调世界时)
Lmsgprefix // 是否将 perfix 移动到日志消息的前面
LstdFlags = Ldate | Ltime // 标准的 flag,包括日期和时间
)
浙公网安备 33010602011771号