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返回标准日志器的输出flags

func Output(calldepth int, s string) error

对于日志事件,Output写入输出,字符串s包含写入日志的通过日志器flags指定的文本前缀,如果s结尾无换行符将会追加换行符,调用深度是跳过的帧数计数当计算文件名和行号如果Llongfile或Lshortfile设置,为了将会打印调用者Output的细节.

func Panic(v ..interface{})

等价于调用Print紧接着调用panic

func Panicf(format string, v ...interface{})

Panicf等价于调用Printf紧接着调用panic

func Panicln(v ...interface{})

Panicln等价于调用Println紧接着调用panic

func 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,尽管目前预定义路径将为2

func (l *Logger) Panic(v ...interface{})

Panic等价于调用Print后紧接着调用panic

func (l *Logger) Panicf(format string, v ...interface{})

Panicf等价于调用Printf紧接着调用panic

func (l *Logger) Panicln(v ...interface{})

Panicln等价于调用Println紧接着调用panic

func (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

自定义Logger
package 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())	
}