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,包括日期和时间
)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?