import "log"
log包实现了简单的日志服务。本包定义了Logger类型,该类型提供了一些格式化输出的方法。本包也提供了一个预定义的“标准”Logger,可以通过辅助函数Print[f|ln]、Fatal[f|ln]和Panic[f|ln]访问,比手工创建一个Logger对象更容易使用。Logger会打印每条日志信息的日期、时间,默认输出到标准错误。Fatal系列函数会在写入日志信息后调用os.Exit(1)。Panic系列函数会在写入日志信息后panic。
const ( // 字位共同控制输出日志信息的细节。不能控制输出的顺序和格式。 // 在所有项目后会有一个冒号:2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message Ldate = 1 << iota // 日期:2009/01/23 Ltime // 时间:01:23:23 Lmicroseconds // 微秒分辨率:01:23:23.123123(用于增强Ltime位) Llongfile // 文件全路径名+行号: /a/b/c/d.go:23 Lshortfile // 文件无路径名+行号:d.go:23(会覆盖掉Llongfile) LstdFlags = Ldate | Ltime // 标准logger的初始值 )
这些选项定义Logger类型如何生成用于每条日志的前缀文本。
type Logger struct {
// contains filtered or unexported fields
}
Logger类型表示一个活动状态的记录日志的对象,它会生成一行行的输出写入一个io.Writer接口。每一条日志操作会调用一次io.Writer接口的Write方法。Logger类型的对象可以被多个线程安全的同时使用,它会保证对io.Writer接口的顺序访问。
var buf bytes.Buffer logger := log.New(&buf, "logger: ", log.Lshortfile) logger.Print("Hello, log file!") fmt.Print(&buf)
Output:
logger: example_test.go:16: Hello, log file!
func New(out io.Writer, prefix string, flag int) *Logger
New创建一个Logger。参数out设置日志信息写入的目的地。参数prefix会添加到生成的每一条日志前面。参数flag定义日志的属性(时间、文件等等)。
func (l *Logger) Flags() int
Flags返回logger的输出选项。
func (l *Logger) SetFlags(flag int)
SetFlags设置logger的输出选项。
func (l *Logger) Prefix() string
Prefix返回logger的输出前缀。
func (l *Logger) SetPrefix(prefix string)
SSetPrefix设置logger的输出前缀。
func (l *Logger) Output(calldepth int, s string) error
Output写入输出一次日志事件。参数s包含在Logger根据选项生成的前缀之后要打印的文本。如果s末尾没有换行会添加换行符。calldepth用于恢复PC,出于一般性而提供,但目前在所有预定义的路径上它的值都为2。
func (l *Logger) Printf(format string, v ...interface{})
Printf调用l.Output将生成的格式化字符串输出到logger,参数用和fmt.Printf相同的方法处理。
func (l *Logger) Print(v ...interface{})
Print调用l.Output将生成的格式化字符串输出到logger,参数用和fmt.Print相同的方法处理。
func (l *Logger) Println(v ...interface{})
Println调用l.Output将生成的格式化字符串输出到logger,参数用和fmt.Println相同的方法处理。
func (l *Logger) Fatalf(format string, v ...interface{})
Fatalf等价于{l.Printf(v...); os.Exit(1)}
func (l *Logger) Fatal(v ...interface{})
Fatal等价于{l.Print(v...); os.Exit(1)}
func (l *Logger) Fatalln(v ...interface{})
Fatalln等价于{l.Println(v...); os.Exit(1)}
func (l *Logger) Panicf(format string, v ...interface{})
Panicf等价于{l.Printf(v...); panic(...)}
func (l *Logger) Panic(v ...interface{})
Panic等价于{l.Print(v...); panic(...)}
func (l *Logger) Panicln(v ...interface{})
Panicln等价于{l.Println(v...); panic(...)}
func Flags() int
Flags返回标准logger的输出选项。
func SetFlags(flag int)
SetFlags设置标准logger的输出选项。
func Prefix() string
Prefix返回标准logger的输出前缀。
func SetPrefix(prefix string)
SetPrefix设置标准logger的输出前缀。
func SetOutput(w io.Writer)
SetOutput设置标准logger的输出目的地,默认是标准错误输出。
func Printf(format string, v ...interface{})
Printf调用Output将生成的格式化字符串输出到标准logger,参数用和fmt.Printf相同的方法处理。
func Print(v ...interface{})
Print调用Output将生成的格式化字符串输出到标准logger,参数用和fmt.Print相同的方法处理。
func Println(v ...interface{})
Println调用Output将生成的格式化字符串输出到标准logger,参数用和fmt.Println相同的方法处理。
func Fatalf(format string, v ...interface{})
Fatalf等价于{Printf(v...); os.Exit(1)}
func Fatal(v ...interface{})
Fatal等价于{Print(v...); os.Exit(1)}
func Fatalln(v ...interface{})
Fatalln等价于{Println(v...); os.Exit(1)}
func Panicf(format string, v ...interface{})
Panicf等价于{Printf(v...); panic(...)}
func Panic(v ...interface{})
Panic等价于{Print(v...); panic(...)}
func Panicln(v ...interface{})
Panicln等价于{Println(v...); panic(...)}