go语言标准库(包) log 日志包文档

Go语言标准库log提供了简单易用的日志记录功能,包括预定义的"标准"Logger,支持设置输出标志、输出目的地和前缀。包内有多种记录日志的方法,如Fatal、Panic等,用于不同严重级别的错误处理。Logger类型允许自定义输出,例如通过New函数创建,以及设置Flags、Output和Prefix。
摘要由CSDN通过智能技术生成

Package log

import “log”

log包实现了简单的日志记录,它定义了Logger类型,其中包含格式化输出的方法。 它还有一个预定义的“标准”Logger,可以通过辅助函数Print[f|ln]Fatal[f|ln]Panic[f|ln]访问,它们比手动创建Logger更容易使用(Logger你可以理解为"日志记录器")。该记录器写入标准错误(stderr)并打印每个记录消息的日期和时间。每条日志消息都在单独的行中输出:如果正在打印的消息未以换行符结尾,则记录器将添加一条消息。 Fatal函数在写入日志消息后调用os.Exit(1)Panic函数在写入日志消息后调用panic



常量Constants

这些标志定义了Logger生成的每个日志条目的前缀文本。 比特位是“或”在一起来控制打印的内容。 无法控制它们出现的顺序(此处列出的顺序)或它们呈现的格式(如注释中所述)。 仅当指定LlongfileLshortfile时,前缀后跟冒号。 例如,标志Ldate | Ltime(或LstdFlags)产生,

2009/01/23 01:23:23 message

而标志 Ldate|Ltime|Lmicroseconds|Llongfile生产,(日期|时间|微秒|输出文件路径级行号)

2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message
const (
		// 本地时区格式:yyyy/MM/dd
        Ldate         = 1 << iota
        // 本地时间格式:HH:mm:ss
        Ltime
        // 微妙解析度:HH:mm:ss.ms
        Lmicroseconds
        // 完整的文件路径/文件名以及行号: /a/b/c/d.go:23
        Llongfile
        // 仅文件名元素以及行号: d.go:23(使用此标志将覆盖Llongfile标志)
        Lshortfile
        // 如果设置了Ldate或Ltime, 将使用UTC而不是本地时区
        LUTC
        // 标准日志记录器的初始值(仅日期及时间)
        LstdFlags     = Ldate | Ltime
)

输出致命错误Fatal

func Fatal(v ...interface{})

Fatal等效于先使用Print()输出信息,然后再调用os.Exit(1)输出stderr,错误代码1,并退出程序。


格式化输出致命错误Fatalf

func Fatalf(format string, v ...interface{})

Fatalf等效于先使用Printf()输出信息,然后再调用os.Exit(1)输出stderr,错误代码1,并退出程序。


格式化输出致命错误并换行Fatalln

func Fatalln(v ...interface{})

Fatalln等效于先使用Println()输出信息,然后再调用os.Exit(1)输出stderr,错误代码1,并退出程序。


获取当前日志记录器的标志Flags

func Flags() int

Flags()返回记录器的标准输出标志。


为日志事件写入输出Output

func Output(calldepth int, s string) error

Output为记录事件写入输出。字符串s包含要在Logger标志指定的前缀之后打印的文本。如果s的最后一个字符不是换行符,则会附加换行符。calldepth是计算文件名和行号时要跳过的帧数,如果设置了LlongfileLshortfile,值为1将打印输出调用者的详细信息。


输出并调用恐慌Panic

func Panic(v ...interface{})

Panic 等效于Print() 跟着再调用panic()


格式化输出并调用恐慌Panicf

func Panicf(format string, v ...interface{})

Panicf 等效于Printf() 跟着再调用panic()


输出并换行后调用恐慌Panicln

func Panicln(v ...interface{})

Panicln 等效于Println() 跟着再调用panic()


获取标准记录的前缀Prefix

func Prefix() string

Prefix返回标准日志记录的输出前缀。


日志打印Print

func Print(v ...interface{})

Print调用输出以打印到标准记录器。 参数以fmt.Print的方式处理。


格式化打印Printf

func Printf(format string, v ...interface{})

Printf调用输出以打印到标准记录器。 参数以fmt.Printf的方式处理。


格式化打印并换行Println

func Println(v ...interface{})

Println调用输出以打印到标准记录器。 参数以fmt.Println的方式处理。


为标准记录器设置记录标志SetFlags

func SetFlags(flag int)

SetFlags为标准日志记录器设置输出标志。


为日志记录器设置I/O输出SetOutput

func SetOutput(w io.Writer)

SetOutput为标准日志记录器设置输出目的地(io.Writer,可以是文件,可以是网络I/O)。


为日志记录器设置前缀SetPrefix

func SetPrefix(prefix string)

SetPrefix为标准日志记录器设置输出前缀。


Type Logger 日志记录器类型

结构体字段:

type Logger struct {
	mu     sync.Mutex // 确保原子级的写入; 保护下面的字段
	prefix string     // 在每行的开头写入的前缀
	flag   int        // 属性(标志)
	out    io.Writer  // 输出目的地(文件或网络I/O)
	buf    []byte     // 用于累积要写入的文本的字节Buffer
}

Logger表示一个活动的日志记录对象,它为io.Writer生成输出行。
每个日志记录操作只对WriterWrite method进行一次调用。
Logger可以同时使用多个goroutine,它保证序列化对Writer的访问。

例子:

var (
	buf    bytes.Buffer
	logger = log.New(&buf, "logger: ", log.Lshortfile)
)
logger.Print("Hello, log file!")
fmt.Print(&buf)

这个例子中,我们将日志记录器的输出目的地设置到一个bytes.Buffer,然后将"Hello, log file!"字符串内容打印到日志记录器,日志记录器的buf字段将会接收到打印记录,并保存在buf中,直到我们将buf的内容处理(输出)。下面将会介绍log包中的New函数。


创建Logger对象New

func New(out io.Writer, prefix string, flag int) *Logger

New创建了一个新的Loggerout变量设置将写入日志数据的目标。 prefix字符串参数设置出现在每个生成的日志行的开头前缀。 flag参数定义日志记录属性。


Logger对象调用写入致命日志Fatal

func (l *Logger) Fatal(v ...interface{})

Fatal等同于l.Print()然后调用os.Exit(1)


Logger对象调用写入格式化致命日志Fatalf

func (l *Logger) Fatalf(format string, v ...interface{})

Fatalf等同于l.Printf()然后调用os.Exit(1)


Logger对象调用写入致命日志带换行Fatalln

func (l *Logger) Fatalln(v ...interface{})

Fatalln等同于l.Println()然后调用os.Exit(1)


获取Logger对象的标志Flags

func (l *Logger) Flags() int

Flags返回l *Logger的输出标志。


Logger对象输出Output

func (l *Logger) Output(calldepth int, s string) error

Outputl *Logger对象的日志记录对象写入输出。字符串s参数包含要在Logger标志指定的前缀之后打印的文本。
如果s的最后一个字符不是换行符,则会附加换行符。 calldepth用于恢复PC并提供通用性,但目前在所有预定义路径上它将为2。

例子:

var (
	// 声明定义一个bytes.Buffer变量
	buf	bytes.Buffer
	// 创建一个Logger对象,输出目的地buf,前缀"INFO: ",输出标志:仅文件名以及行号
	logger = log.New(&buf, "INFO: ", log.Lshortfile)
	
	// 定义一个函数对象,函数使用Logger对象调用(l *Logger)Output(calldepth, s string) error
	infof = func(info string) {
		logger.Output(2, info)
	}
)
// 调用infof函数对象变量,向Logger对象buf输出"Hello world"
if err := infof("Hello world"); err != nil {
	panic(err)
}
// 将buf内容输出
fmt.Print(&buf)

输出结果:

INFO: prog.go:19: Hello world
  |---------|-----------|
  |			|			|
 前缀		|			|
 		 Lshortfile		|
 		 			Output:s string

Logger对象输出恐慌日志panic

func (l *Logger) Panic(v ...interface{})

Panic相当于调用l.Print()然后调用panic()


Logger对象输出格式化恐慌panicf

func (l *Logger) Panicf(format string, v ...interface{})

Panicf相当于调用l.Printf()然后调用panic()


Logger对象输出带换行的恐慌panicln

func (l *Logger) Panicln(v ...interface{})

Panicln相当于调用l.Println()然后调用panic()


获取Logger对象前缀

func (l *Logger) Prefix() string

Prefix返回(l *Logger)的输出前缀。


Logger对象打印日志Print

func (l *Logger) Print(v ...interface{})

Print调用 l.Output 打印到 logger。 参数以fmt.Print的方式处理。


Logger对象格式化打印日志Printf

func (l *Logger) Printf(format string, v ...interface{})

Printf调用 l.Output 打印到 logger。 参数以fmt.Printf的方式处理。


Logger对象打印带换行日志Println

func (l *Logger) Println(v ...interface{})

Println调用 l.Output 打印到 logger。 参数以fmt.Println的方式处理。


设置Logger对象的输出标志SetFlags

func (l *Logger) SetFlags(flag int)

SetFlags设置(l *Logger)对象的输出标志。


设置Logger对象的输出目的地SetOutput

func (l *Logger) SetOutput(w io.Writer)

SetOutput设置(l *Logger)对象的目的地(io.Writer 文件或网路) 。


设置Logger对象的输出前缀SetPrefix

func (l *Logger) SetPrefix(prefix string)

SetPrefix设置(l *Logger)对象的输出前缀。


获取Logger对象的输出目的地Writer

func (l *Logger) Writer() io.Writer

Writer返回(l *Logger)对象的输出目的地(io.Writer)。


Subdirectories

NameSynopsis
syslogPackage syslog provides a simple interface to the system log service.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值