晚上闲着看了眼log 为了学习记录一下
const ( // Bits or'ed together to control what's printed. There is no control over the // order they appear (the order listed here) or the format they present (as // described in the comments). A colon appears after these items: // 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message Ldate = 1 << iota // the date: 2009/01/23 Ltime // the time: 01:23:23 Lmicroseconds // microsecond resolution: 01:23:23.123123. assumes Ltime. Llongfile // full file name and line number: /a/b/c/d.go:23 Lshortfile // final file name element and line number: d.go:23. overrides Llongfile LstdFlags = Ldate | Ltime // initial values for the standard logger )
log包中会先定义几个常量 作为flag 在创建Logger时 指定flag 那么log在每次打印日志时都会将flag所对应的信息打印出来
比如l := log.New(os.Stdout,"",log.Ldate|log.Ltime) 指定了Ldate 和 Ltime那么每次调用
l.Println(“date/time”)打印时会自动加上日期和时间的信息
结果 : 2014/07/26 23:03:22 date/time:
上面几个常量解释的很清楚了 我就不解释了
log包中自己内置了一个Logger(Logger是log包中的一个结构体所有的log输出都是围绕Logger展开的 结构如下)
type Logger struct { mu sync.Mutex // ensures atomic writes; protects the following fields prefix string // prefix to write at beginning of each line flag int // properties out io.Writer // destination for output buf []byte // for accumulating text to write }如果直接使用log.xxx那么都是调用其内置的Logger )
var std = New(os.Stderr, "", LstdFlags)
以下三个函数 其实就是在调用log包中Print PrintF Printlb 之后 调用 os.Exit(1)退出应用 整个应用都会退出 所以慎用
func Fatal(v ...interface{})
func Fatalf(format string, v ...interface{})func Fatalln(v ...interface{})
至于三个Panic函数 只会抛出恐慌并不会是程序退出 只要自己做好处理就行了
func Prefix() string // 返回Logger创建时定义的前缀
如果不想使用内置的Logger则自己创建一个出来通过下面的New函数
func New(out io.Writer, prefix string, flag int) *Logger
out代表输出位置 prefix代表前缀 flag就是之前介绍的
log包中还有一个syslog还没空看 以后再说吧
这个包里 其实没啥可讲的........
有疑问加站长微信联系(非本文作者)