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. |