您的位置:首页 > 编程语言 > Go语言

Golang: glog 的使用

2018-01-18 15:05 211 查看

基本用法

创建 test.go 
package main

import "github.com/golang/glog"

func main() {
glog.Info("Testing glog.")
glog.Flush()
}

运行
go run test.go

检查 /tmp 目录,出现了两个新的文件
ll /tmp/
total 4
-rw-r--r--. 1 root root 264 Jan 18 13:29 test.{host}.{user}.log.INFO.{date}
lrwxrwxrwx. 1 root root  64 Jan 18 13:29 test.INFO -> test.{host}.{user}.log.INFO.{date}

查看 test.INFO 的内容
Log file created at: {date}
Running on machine: {host}
Binary: Built with gc go1.9 for linux/amd64
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I0118 13:29:20.878522   16625 test.go:6] Testing glog.


log 等级

基本的 log 等级分为4类:Info, Warning, Error, Fatal.

Flush

log 产生后,会暂存在内存的buffer中。只有显示的调用 glog.Flush(), 数据才会真正被写入文件。glog package 的 init 函数中启动了一个 go routine 用来周期性的调用 glog.Flush() 来保证数据被写入文件, 默认的 Flush 周期为30 秒。
当程序运行至 glog.Fatal() 时, glog package 中保证了在退出前程序前会将所有缓存中的log写入文件。但是对于 Info, Warning 以及 Error, 如果程序正常退出,那么在程序退出前 30 秒的 log 就会丢失。defer 可以被用来防止这种情况的发生。package main

import "github.com/golang/glog"

func main() {
defer glog.Flush()

glog.Info("Testing glog.")
}


参考文献

https://godoc.org/github.com/golang/glog
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: