# package log

`import "log"`

log包实现了简单的日志服务。本包定义了Logger类型，该类型提供了一些格式化输出的方法。本包也提供了一个预定义的“标准”Logger，可以通过辅助函数Print[f|ln]、Fatal[f|ln]和Panic[f|ln]访问，比手工创建一个Logger对象更容易使用。Logger会打印每条日志信息的日期、时间，默认输出到标准错误。Fatal系列函数会在写入日志信息后调用os.Exit(1)。Panic系列函数会在写入日志信息后panic。

## Constants

    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

    type Logger struct {
        // contains filtered or unexported fields
    }

Logger类型表示一个活动状态的记录日志的对象，它会生成一行行的输出写入一个io.Writer接口。每一条日志操作会调用一次io.Writer接口的Write方法。Logger类型的对象可以被多个线程安全的同时使用，它会保证对io.Writer接口的顺序访问。

Example

    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

    func New(out io.Writer, prefix string, flag int) *Logger

New创建一个Logger。参数out设置日志信息写入的目的地。参数prefix会添加到生成的每一条日志前面。参数flag定义日志的属性（时间、文件等等）。

### func (*Logger) Flags

    func (l *Logger) Flags() int

Flags返回logger的输出选项。

### func (*Logger) SetFlags

    func (l *Logger) SetFlags(flag int)

SetFlags设置logger的输出选项。

### func (*Logger) Prefix

    func (l *Logger) Prefix() string

Prefix返回logger的输出前缀。

### func (*Logger) SetPrefix

    func (l *Logger) SetPrefix(prefix string)

SSetPrefix设置logger的输出前缀。

### func (*Logger) Output

    func (l *Logger) Output(calldepth int, s string) error

Output写入输出一次日志事件。参数s包含在Logger根据选项生成的前缀之后要打印的文本。如果s末尾没有换行会添加换行符。calldepth用于恢复PC，出于一般性而提供，但目前在所有预定义的路径上它的值都为2。

### func (*Logger) Printf

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

Printf调用l.Output将生成的格式化字符串输出到logger，参数用和fmt.Printf相同的方法处理。

### func (*Logger) Print

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

Print调用l.Output将生成的格式化字符串输出到logger，参数用和fmt.Print相同的方法处理。

### func (*Logger) Println

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

Println调用l.Output将生成的格式化字符串输出到logger，参数用和fmt.Println相同的方法处理。

### func (*Logger) Fatalf

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

Fatalf等价于{l.Printf(v...); os.Exit(1)}

### func (*Logger) Fatal

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

Fatal等价于{l.Print(v...); os.Exit(1)}

### func (*Logger) Fatalln

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

Fatalln等价于{l.Println(v...); os.Exit(1)}

### func (*Logger) Panicf

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

Panicf等价于{l.Printf(v...); panic(...)}

### func (*Logger) Panic

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

Panic等价于{l.Print(v...); panic(...)}

### func (*Logger) Panicln

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

Panicln等价于{l.Println(v...); panic(...)}

## func Flags

    func Flags() int

Flags返回标准logger的输出选项。

## func SetFlags

    func SetFlags(flag int)

SetFlags设置标准logger的输出选项。

## func Prefix

    func Prefix() string

Prefix返回标准logger的输出前缀。

## func SetPrefix

    func SetPrefix(prefix string)

SetPrefix设置标准logger的输出前缀。

## func SetOutput

    func SetOutput(w io.Writer)

SetOutput设置标准logger的输出目的地，默认是标准错误输出。

## func Printf

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

Printf调用Output将生成的格式化字符串输出到标准logger，参数用和fmt.Printf相同的方法处理。

## func Print

    func Print(v ...interface{})

Print调用Output将生成的格式化字符串输出到标准logger，参数用和fmt.Print相同的方法处理。

## func Println

    func Println(v ...interface{})

Println调用Output将生成的格式化字符串输出到标准logger，参数用和fmt.Println相同的方法处理。

## func Fatalf

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

Fatalf等价于{Printf(v...); os.Exit(1)}

## func Fatal

    func Fatal(v ...interface{})

Fatal等价于{Print(v...); os.Exit(1)}

## func Fatalln

    func Fatalln(v ...interface{})

Fatalln等价于{Println(v...); os.Exit(1)}

## func Panicf

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

Panicf等价于{Printf(v...); panic(...)}

## func Panic

    func Panic(v ...interface{})

Panic等价于{Print(v...); panic(...)}

## func Panicln

    func Panicln(v ...interface{})

Panicln等价于{Println(v...); panic(...)}