Log
Overview
包log实现简单的日志包,它定义的类型Logger,包含一些格式化输出的方法,它还有预定义的易访问的标准"Logger",通过帮助函数 Print[f|ln],Fatal[f|ln],Panic[f|ln],比手动地创建Logger更简单,日志库写入标准错误且在日志消息中打印每个日期和时间.每个日志消息由换行符分割,如果打印的消息没有换行符,日志器将会增加一个,Fatal函数将写入日志消息后调用os.Exit(1),Panic函数将会在写入日志消息后调用panic常量(Constants)
const (
Ldate = 1 << itoa // 本地时区日期: 2009/01/23
Ltime // 本地时区时间: 01:23:23
Lmicroseconds // 微秒精度: 01:23:23.123123, 假定Ltime
Llongfile // 充分的文件名和行号: /a/b/c/d.go:23
Lshortfile // 最后的文件名和行号: d.go:23
LUTC // 如果Ldate或Ltime被设置,使用UTC时区而不是本地时区
LstdFlags = Ldate | Ltime // 标准日志器的初始值
)
这些flags定义了由日志器产生的每个消息的文本前缀条目,位的顺序共同控制打印的格式,这里无法控制它们出现的顺序或它们呈现的格式(注释中的格式),当Llongfile或Lshortfile指定时,前缀指定着冒号,比如Ldate|Ltime(LstdFlags)产生的.
2009/01/23 01:23:23 message
而Ldate|Ltime|Lmicrosceonds|Llongfile产生的.
2009/01/23 01:23:23.123123 /a/b/c/d.go: message
函数(Functions)
func Fatal(v ...interface{})
Fatal等价于调用Print紧接着调用os.Exit(1)func Fatalf(format string, v ...interface{})
Fatalf等价于调用Printf紧接着调用os.Exit(1)func Fatalln(v ...interface{})
Fatalln等价于调用Println紧接着调用os.Exit(1)func Flags() int
Flags返回标准日志器的输出flagsfunc Output(calldepth int, s string) error
对于日志事件,Output写入输出,字符串s包含写入日志的通过日志器flags指定的文本前缀,如果s结尾无换行符将会追加换行符,调用深度是跳过的帧数计数当计算文件名和行号如果Llongfile或Lshortfile设置,为了将会打印调用者Output的细节.func Panic(v ..interface{})
等价于调用Print紧接着调用panicfunc Panicf(format string, v ...interface{})
Panicf等价于调用Printf紧接着调用panicfunc Panicln(v ...interface{})
Panicln等价于调用Println紧接着调用panicfunc Prefix() string
返回标准日志器的输出前缀func Print(v ...interface{})
Print打印输出到标准日志器,参数由fmt.Print处理func Printf(format string, v ...interface{})
Printf打印输出到标准日志器,参数由fmt.Printf处理func Println(v ...interface{})
Println打印输出到标准日志器,参数有fmt.Println处理func SetFlags(flag int)
SetFlags设置标准输出的输出标志func SetOutput(w io.Writer)
SetOutput设置标准日志器的输出目的地func SetPrefix(s string)
SetPrefix设置标准日志器的输出前缀func Writer() io.Writer
返回标准日志器的输出目的地type Logger
type Logger struct {
// contains filtered or unexported fields
}
Logger表示一个活跃的日志对象产生输出行到io.Writer,每个日志操作都会作出一个简单Writer的Write方法调用,日志器能够保证被多个goroutine使用,它保证使用Writer序列化.
func New(out io.Writer, prefix string, flags int) *Logger
New创建一个新的日志器,out指定日志器输出目的地,prefix指定日志器产生的输出前缀,flags定义了日志属性.func (l *Logger) Fatal(v ...interface{})
Fatal等价于调用Print紧接着调用os.Exit(1)func (l *Loggger) Fatalf(format string, v ...interface{})
Fatalf等价于调用Printf紧接着调用os.Exit(1)func (l *Logger) Fatalln(v ...interface{})
Fatalln等价于调用Println紧接着调用os.Exit(1)func (l *Logger) Flags() int
Flags返回该日志器的标准func (l *Logger) Output(calldepth int, s string) error
对于日志事件,Output写入输出,s包含日志器的前缀,如果文本结尾没有换行符,调用深度被用来恢复PC,尽管目前预定义路径将为2func (l *Logger) Panic(v ...interface{})
Panic等价于调用Print后紧接着调用panicfunc (l *Logger) Panicf(format string, v ...interface{})
Panicf等价于调用Printf紧接着调用panicfunc (l *Logger) Panicln(v ...interface{})
Panicln等价于调用Println紧接着调用panicfunc (l *Logger) Prefix() string
返回该日志器的前缀func (l *Logger) Print(v ...interface{})
Print调用l.Output打印到日志,参数由fmt.Print处理func (l *Logger) Printf(format string, v ...interface{})
Printf调用l.Output打印到日志,参数由fmt.Printf处理func (l *Logger) Println(v ...interface{})
Println调用l.Output打印到日志,参数由fmt.Println处理func (l *Logger) SetFlags(flags int)
设置日志器标志func (l *Logger) SetOutput(w io.Writer)
SetOutput设置日志器的输出目的地func (l *Logger) SetPrefix(prefix string)
SetPrefix设置标准日志器的输出前缀func (l *Logger) Writer() io.Writer
Writer返回日志器的输出目的地Examples
自定义Loggerpackage main
import (
"log"
"bytes"
"fmt"
)
var (
buf bytes.Buffer
logger = log.New(&buf, "self logger: ", log.LstdFlags)
)
func main() {
logger.Println("hello, my logger")
fmt.Print(buf.String())
}