1. 介绍

文档地址:https://pkg.go.dev/log

Go 标准库 log 用于实现简单的日志打印功能。

指定日志文件打印日志:

type People struct {
	name string
	age  int64
}

func main() {
	logFile, _ := os.OpenFile("log/info.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
	logger := log.New(logFile, "", log.Ldate|log.Ltime)
	p := People{name: "moondo", age: 20}
	logger.Printf("%#v", p)
}

2. 常量

前缀常量,定义了日志每一行的前缀,各选项可以通过或运算组合起来:

const (
	Ldate         = 1 << iota     // the date in the local time zone: 2009/01/23
	Ltime                         // the time in the local time zone: 01:23:23
	Lmicroseconds                 // microsecond resolution: 01:23:23.123123.  assumes Ltime.
	Llongfile                     // full file name and line number: /a/b/c/d.go:23
	Lshortfile                    // final file name element and line number: d.go:23. overrides Llongfile
	LUTC                          // if Ldate or Ltime is set, use UTC rather than the local time zone
	Lmsgprefix                    // move the "prefix" from the beginning of the line to before the message
	LstdFlags     = Ldate | Ltime // initial values for the standard logger
)

3. 类型

2.1 Logger

类型定义:

type Logger struct {
	// contains filtered or unexported fields
}

方法:

// Default 返回包级别的Logger对象
func Default() *Logger

// New 创建Logger对象
func New(out io.Writer, prefix string, flag int) *Logger

// Print 打印参数内容
func (l *Logger) Print(v ...any)

// Printf 按照格式串打印内容
func (l *Logger) Printf(format string, v ...any)

// Println 打印内容加换行
func (l *Logger) Println(v ...any)

4. 函数

// SetOutput 设置日志打印的地方
func SetOutput(w io.Writer)

// Writer 返回日志打印的logger
func Writer() io.Writer

// SetFlags 设置前缀标记
func SetFlags(flag int)

// SetPrefix 设置前缀内容
func SetPrefix(prefix string)

// Flags 获取日志的前缀标记
func Flags() int

// Prefix 返回日志的前缀内容
func Prefix() string

// Print 打印参数内容
func Print(v ...any)

// Printf 按照格式串打印内容
func Printf(format string, v ...any)

// Println 打印内容加换行
func Println(v ...any)

// Fatal 等于调用 Print() 后调用 os.Exit(1)
func Fatal(v ...any)
func Fatalf(format string, v ...any)
func Fatalln(v ...any)

// Panic 等于调用 Print() 后调用 panic()
func Panic(v ...any)
func Panicf(format string, v ...any)
func Panicln(v ...any)