version: 1.10

package log

import "log"

概述

log 包实现了一个简单的日志记录包。它定义了一个支持格式化输出的 Logger 类型。它还有一个预定义的“标准” Logger ,可以通过 Print[f|ln] , Fatal[f|ln] , Panic[f|ln] 等函数来访问,与手动创建一个 Logger 相比,“标准” Logger 更易于使用。 logger 会把日志打印到标准错误(屏幕),每条日志都带有日期和时间信息。每条日志占据独立的一行:如果被打印的日志没有换行符, logger 会自动添加。 Fatal 函数在打印日志后会调用 os.Exit(1) 。 Panic 函数在打印日志后会调用 panic 函数。

索引

例子

文件

log.go

常量

  1. const (
  2. Ldate = 1 << iota // 本地时区日期:2009/01/23
  3. Ltime // 本地时区时间: 01:23:23
  4. Lmicroseconds // 毫秒解析格式: 01:23:23.123123. 假设当前值是 Ltime
  5. Llongfile // 带路径的文件名和行号: /a/b/c/d.go:23
  6. Lshortfile // 文件名和行号: d.go:23. overrides Llongfile
  7. LUTC // 如果 Ldate 或 Ltime 被赋值,使用 UTC 时区而不是本地时区
  8. LstdFlags = Ldate | Ltime // 标准 logger 的初始值
  9. )

这些标志定义了 Logger 打印的每个日志的前缀文本。这些标志通过或操作组合来控制打印格式。标志组合的先后顺序没有影响。当 Llongfile 或 Lshortfile 被指定时,前缀文本会以冒号结尾。举个例子, Ldate | Ltime (或 LstdFlags ) 标志组合会产生如下格式的日志:

  1. 2009/01/23 01:23:23 message

而 Ldate | Ltime | Lmicroseconds | Llongfile 标志组合会产生如下格式的日志:

  1. 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message

func Fatal

  1. func Fatal(v ...interface{})

Fatal 函数等价于调用 Print() 后调用 os.Exit(1) 。

func Fatalf

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

Fatalf 函数等价于调用 Printf() 后调用 os.Exit(1) 。

func Fatalln

  1. func Fatalln(v ...interface{})

Fatalln 函数等价于调用 Println() 后调用 os.Exit(1) 。

func Flags

  1. func Flags() int

Flags 函数返回标准 logger 的输出参数。

func Output

  1. func Output(calldepth int, s string) error

Output 函数打印一个 logging 事件的信息。打印的内容包括日志内容以及被 Logger 的标志指定的前缀文本。如果参数 s 的最后一个字符不是换行符,会自动补上换行符。如果 Llongfile 或 Lshortfile 被指定,参数 calldepth 表示计算文件名和行数时,忽略的函数调用的次数。如果值为1会打印函数调用者的详细信息。

func Panic

  1. func Panic(v ...interface{})

Panic 函数等价于调用 Print() 后调用 panic() 。

func Panicf

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

Panicf 函数等价于调用 Printf() 后调用 panic() 。

func Panicln

  1. func Panicln(v ...interface{})

Panicln 函数等价于调用 Println() 后调用 panic() 。

func Prefix

  1. func Prefix() string

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

func Print

  1. func Print(v ...interface{})

Print 函数调用 Output 函数来使用标准 logger 打印日志。参数按照 fmt.Print 函数的方式处理。

func Printf

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

Printf 函数调用 Output 函数来使用标准 logger 打印日志。参数按照 fmt.Printf 函数的格式处理。

func Println

  1. func Println(v ...interface{})

Println 函数调用 Output 函数来使用标准 logger 打印日志。参数按照 fmt.Println 函数的格式处理。

func SetFlags

  1. func SetFlags(flag int)

SetFlags 函数设置标准 logger 的打印标志。

func SetOutput

  1. func SetOutput(w io.Writer)

SetOutput 函数设置标准 logger 的输出目标。

func SetPrefix

  1. func SetPrefix(prefix string)

SetPrefix 函数设置标准 logger 的打印前缀文本。

type Logger

  1. type Logger struct {
  2. // contains filtered or unexported fields
  3. }

一个 Logger 表示一个激活的 logging 对象,它可以向 io.Writer 写入多条记录。每次 logging 操作调用一次 Writer 的 Write 方法。一个 Logger 可以被多个 goroutines 并发使用,它保证按顺序地调用 Writer 。

Example:

  1. var (
  2. buf bytes.Buffer
  3. logger = log.New(&buf, "logger: ", log.Lshortfile)
  4. )
  5. logger.Print("Hello, log file!")
  6. fmt.Print(&buf)
  7. // Output:
  8. // logger: example_test.go:19: Hello, log file!

func New

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

New 函数创建一个新的 Logger 。参数 out 设置日志信息的输出位置。参数 prefix 出现在每条日志的开始。参数 flag 定义 logging 的属性。

func (*Logger) Fatal

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

Fatal 方法等价于调用 l.Print() 后调用 os.Exit(1) 。

func (*Logger) Fatalf

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

Fatalf 方法等价于调用 l.Printf() 后调用 os.Exit(1) 。

func (*Logger) Fatalln

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

Fatalln 方法等价于调用 l.Println() 后调用 os.Exit(1) 。

func (*Logger) Flags

  1. func (l *Logger) Flags() int

Flags 方法返回 logger 的输出标志。

func (*Logger) Output

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

Output 方法打印一个 logging 事件的信息。打印的内容包括日志内容以及被 Logger 的标志指定的前缀文本。如果参数 s 的最后一个字符不是换行符,会自动补上换行符。参数 calldepth 一般用来恢复 PC ,尽管当前所有预定义的路径都是2。

Example:

  1. var (
  2. buf bytes.Buffer
  3. logger = log.New(&buf, "INFO: ", log.Lshortfile)
  4. infof = func(info string) {
  5. logger.Output(2, info)
  6. }
  7. )
  8. infof("Hello world")
  9. fmt.Print(&buf)
  10. // Output:
  11. // INFO: example_test.go:36: Hello world

func (*Logger) Panic

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

Panic 方法等价于调用 l.Print() 后调用 panic() 。

func (*Logger) Panicf

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

Panicf 方法等价于调用 l.Printf() 后调用 panic() 。

func (*Logger) Panicln

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

Panicln 方法等价于调用 l.Println() 后调用 panic() 。

func (*Logger) Prefix

  1. func (l *Logger) Prefix() string

Prefix 方法返回 logger 的输出前缀文本。

func (*Logger) Print

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

Print 方法调用 l.Output 函数来使用 logger 打印日志。参数按照 fmt.Print 函数的格式处理。

func (*Logger) Printf

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

Printf 方法调用 l.Output 函数来使用 logger 打印日志。参数按照 fmt.Printf 函数的格式处理。

func (*Logger) Println

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

Println 方法调用 l.Output 函数来使用 logger 打印日志。参数按照 fmt.Println 函数的格式处理。

func (*Logger) SetFlags

  1. func (l *Logger) SetFlags(flag int)

SetFlags 方法设置 logger 的打印标志。

func (*Logger) SetOutput

  1. func (l *Logger) SetOutput(w io.Writer)

SetOutput 方法设置 logger 的输出目标。

func (*Logger) SetPrefix

  1. func (l *Logger) SetPrefix(prefix string)

SetPrefix 方法设置 logger 的打印前缀文本。

Subdirectories