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
- 输出致命错误Fatal
- 格式化输出致命错误Fatalf
- 格式化输出致命错误并换行Fatalln
- 获取当前日志记录器的标志Flags
- 为日志事件写入输出Output
- 输出并调用恐慌Panic
- 格式化输出并调用恐慌Panicf
- 输出并换行后调用恐慌Panicln
- 获取标准记录的前缀Prefix
- 日志打印Print
- 格式化打印Printf
- 格式化打印并换行Println
- 为标准记录器设置记录标志SetFlags
- 为日志记录器设置I/O输出SetOutput
- 为日志记录器设置前缀SetPrefix
- Type Logger(Logger类型)
- 创建Logger对象New
- Logger对象调用写入致命日志Fatal
- Logger对象调用写入格式化致命日志Fatalf
- Logger对象调用写入致命日志带换行Fatalln
- 获取Logger对象的标志Flags
- Logger对象输出Output
- Logger对象输出恐慌日志panic
- Logger对象输出格式化恐慌panicf
- Logger对象输出带换行的恐慌panicln
- 获取Logger对象前缀
- Logger对象打印日志Print
- Logger对象格式化打印日志Printf
- Logger对象打印带换行日志Println
- 设置Logger对象的输出标志SetFlags
- 设置Logger对象的输出目的地SetOutput
- 设置Logger对象的输出前缀SetPrefix
- 获取Logger对象的输出目的地Writer
常量Constants
这些标志定义了Logger生成的每个日志条目的前缀文本。 比特位是“或”在一起来控制打印的内容。 无法控制它们出现的顺序(此处列出的顺序)或它们呈现的格式(如注释中所述)。 仅当指定Llongfile或Lshortfile时,前缀后跟冒号。 例如,标志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是计算文件名和行号时要跳过的帧数,如果设置了Llongfile或Lshortfile,值为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生成输出行。
每个日志记录操作只对Writer的Write 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创建了一个新的Logger。 out变量设置将写入日志数据的目标。 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
Output为l *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
| Name | Synopsis |
|---|---|
| … | |
| syslog | Package syslog provides a simple interface to the system log service. |
Go语言标准库log提供了简单易用的日志记录功能,包括预定义的"标准"Logger,支持设置输出标志、输出目的地和前缀。包内有多种记录日志的方法,如Fatal、Panic等,用于不同严重级别的错误处理。Logger类型允许自定义输出,例如通过New函数创建,以及设置Flags、Output和Prefix。
1549

被折叠的 条评论
为什么被折叠?



