日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Go的日志模块glog调研笔记

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go的日志模块glog调研笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

glog簡介
glog是著名的google開源C++日志庫glog(https://github.com/google/glog)的golang版本,glog是一個輕量級的日志庫,上手簡單不需要配置文件并且穩定高效,可以自定義控制的內容比較少。?
glog主要有以下幾個特點:?
1. glog有四種日志等級INFO < WARING < ERROR < FATAL,不同等級的日志是打印到不同文件的,低等級的日志文件中(INFO)會包含高等級的日志信息(ERROR)?
2. 通過命令行傳遞參數 –log_dir指定日志文件的存放目錄,目錄如果不存在,需要事先創建,默認為os.TempDir() ,也就是默認目錄是/tmp
3. 可以根據文件大小切割日志文件,但是不能根據日期切割日志文件?
4. 日志輸出格式是固定的(Lmmdd hh:mm:ss.uuuuuu threadid file:line] msg…)不可以自定義?
5. 在程序開始時需要調用flag.Parse()解析命令行參數,在程序退出時需要調用glog.Flush() 確保將緩存區中的內容輸出到文件中
6. glog.V(1).Infoln("level 1")這行代碼表示設置的-v參數大于V()里面的參數才執行后面的Infoln。如果不加-v參數,默認等級為0

glob的參數

// By default, all log statements write to files in a temporary directory.
// This package provides several flags that modify this behavior.
// As a result, flag.Parse must be called before any logging is done.
//
//  -logtostderr=false
//      Logs are written to standard error instead of to files.
//  -alsologtostderr=false
//      Logs are written to standard error as well as to files.
//  -stderrthreshold=ERROR
//      Log events at or above this severity are logged to standard
//      error as well as to files.
//  -log_dir=""
//      Log files will be written to this directory instead of the
//      default temporary directory.
//
//  Other flags provide aids to debugging.
//
//  -log_backtrace_at=""
//      When set to a file and line number holding a logging statement,
//      such as
//          -log_backtrace_at=gopherflakes.go:234
//      a stack trace will be written to the Info log whenever execution
//      hits that statement. (Unlike with -vmodule, the ".go" must be
//      present.)
//  -v=0
//      Enable V-leveled logging at the specified level.
//  -vmodule=""
//      The syntax of the argument is a comma-separated list of pattern=N,
//      where pattern is a literal file name (minus the ".go" suffix) or
//      "glob" pattern and N is a V level. For instance,
//          -vmodule=gopher*=3
//      sets the V level to 3 in all Go files whose names begin "gopher".

簡單示例
下面是一個簡單的例子, 假設該例子文件名為glob_demo.go

//description: 演示Go的日志庫glob的用法
//note: 需要先安裝該日志庫,同時如果指定目錄的話,需要先創建該目錄,如果不指定目錄,默認存放在/tmp下面
//run: go get; go build glob_demo.go; ./glob_demo --log_dir="./"
//date: 2019-05-28package mainimport ("flag""github.com/golang/glog"
)func main() {//初始化命令行參數flag.Parse()//退出時調用,確保日志寫入磁盤文件中defer glog.Flush()glog.Info("This is a Info log")glog.Warning("This is a Warning log")glog.Error("This is a Error log")glog.Info("info %d", 1)glog.Warning("warning %d", 2)glog.Error("error %d", 3)//需要開啟-v=xx參數之后才會打印出來glog.V(1).Infoln("level 1")glog.V(2).Infoln("level 2")
}


首先安裝glob日志庫
go get -v "github.com/golang/glob"
然后編譯運行
go build glob_demo.go
./glob_demo --log_dir="./"
./glob_demo -v=3
然后在當前目錄或是tmp目錄下面,可以看到各種日志文件,我們只需要查看符號鏈接文件即可,因為每次運行都會產生當前級別的日志文件,多次運行會有很多這種日志文件,而符號鏈接文件會始終指向最新的日志文件上

參考文獻

[1].https://github.com/golang/glog

總結

以上是生活随笔為你收集整理的Go的日志模块glog调研笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。