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,包括日期和时间
)

posted on   Slime04  阅读(91)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示