Go语言标准库log包

Go语言标准库log包

log

go语言内置的log包实现了简单的日志记录功能,本文主要记录log包的基本使用

 

使用logger

log包定义了异常格式化输出的方法。可以通过调用Print系列(Print|Printf|Println),Fatal系列(Fatal|Fatalln|Fatalf),Panic系列(Panicf|Panicln|Panic)

使用log包来调用方法,默认会将日志输出到终端。

func main() {
log.Println("这是一条很普通的日志.")
v := "很普通的"
log.Printf("这是一条%s日志 \n", v)
log.Fatalln("这是一条会触发fatal的日志")
// log.Panicln("这是一条会触发panic的日志")
}

直送代码输入结果:

2022/05/02 21:39:37 这是一条很普通的日志.
2022/05/02 21:39:37 这是一条很普通的日志
2022/05/02 21:39:37 这是一条会触发fatal的日志
exit status 1

flag选项

log标准库提供了如下flag的选项,它们是一些列已定义好的常量。

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)
  LUTC                         // 使用UTC时间
  LstdFlags     = Ldate | Ltime // 标准logger的初始值
)

下面我们在记录日志时设置表中logger的输出选项:

package main

import (
"log"
"os"
)

func init() {
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
f, err := os.OpenFile("d:/a.log", os.O_RDONLY|os.O_APPEND|os.O_CREATE, 0666)
if err != nil {
log.Fatal("打开日志文件失败")
}
log.SetOutput(f)
}

func main() {
log.Println("记录一条普通日志.")
}

执行代码结果:

2022/05/02 21:45:40 main.go:26: 记录一条普通日志.

配置日志前缀

复用以上代码

package main

import (
"log"
"os"
)

func init() {
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
f, err := os.OpenFile("d:/a.log", os.O_RDONLY|os.O_APPEND|os.O_CREATE, 0666)
if err != nil {
log.Fatal("打开日志文件失败")
}
log.SetOutput(f)
}

func main() {
log.SetPrefix("mylogfile")
log.Println("记录一条普通日志.")
}

执行代码结果如下:

[mylogfile]2022/05/02 21:48:57 main.go:27: 记录一条普通日志.

配置日志输出到文件

这里需要使用到SetOutPut函数

func SetOutput(w io.Writer)

SetOutput函数用来设置标准logger的输出目的地,默认是标准错误输出。

使用表中logger,将文件写入到指定文件中。

package main

import (
"log"
"os"
)

func init() {
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
f, err := os.OpenFile("d:/a.log", os.O_RDONLY|os.O_APPEND|os.O_CREATE, 0666)
if err != nil {
log.Fatal("打开日志文件失败")
}
log.SetOutput(f)
}

func main() {
log.Println("记录一条普通日志.")
}

执行代码,结果如下:

2022/05/02 21:52:43 main.go:27: 记录一条普通日志.
 
posted @ 2022-05-02 21:55  wushaoyu  阅读(217)  评论(0编辑  收藏  举报