go語言寫日誌

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

go語言有一個標準庫,log,提供了最基本的日誌功能,但是沒有什麼進階的功能,如果需要進階的特性,可以選擇glog或log4go。

glog是google提供的,類似於google的c++ log庫,使用起來非常簡單,下面介紹一下;log4go的用法和log4j一樣,可配置性比較高。

glog只提供了少數幾個選項,通過命令列控制,例如:

-log_dir: 記錄檔儲存目錄

-alsologtostderr: 日誌寫入檔案的同時,輸出到stderr

-v:配置V輸出的等級。

glog使用非常簡單,只需要import就可以了。glog package的init函數會初始化並啟動一個glog 的flushDaemon協程,你只需要使用glog.Info, glog.Warning, glog.Error或glog.Fatal即可。

一個簡單的例子:

package mainimport ("flag""fmt""github.com/golang/glog""os")// 避免沒有引用fmt的編譯錯誤var _ = fmt.Printlnfunc main() {//初始化命令列參數flag.Parse()glog.Info("hello, glog")glog.Warning("warning glog")glog.Error("error glog")glog.Infof("info %d", 1)glog.Warningf("warning %d", 2)glog.Errorf("error %d", 3)glog.V(3).Infoln("info with v 3")glog.V(2).Infoln("info with v 2")glog.V(1).Infoln("info with v 1")glog.V(0).Infoln("info with v 0")// 退出時調用,確保日誌寫入檔案中glog.Flush()}

有幾點說明:
1、高等級的日誌會同時輸出到比它等級低的檔案中,例如error日誌會同時輸出到error檔案,warning檔案,info檔案中,依次類推;

2、啟動時,調用flag.Parse用來初始化glog的參數,例如xxx.exe -log_dir=”./” -v=3。如果不提供參數,log_dir目錄為
os.TempDir(),v的值為0

3、程式退出時,需要調用glog.Flush(),將日誌寫入檔案中。

4、V函數。預設的v選項為0,可以通過命令列設定v值。V函數的功能是,當V函數的參數高於glog的v值時,不會執行後續的Info函數,否則就執行。

glog.V(2).Info

相當於

if glog.V(2) {    Info()}

V的實現很精彩,有興趣可以看看原始碼。

5、運行樣本,假設檔案名稱為f.go

go build f.gof.exe -log_dir="./" -v=3f.exe -log_dir="./" -v=2

6、記錄檔名

記錄檔名由以下幾部分組成:

程式名.電腦名.使用者名稱.log.xxx.YYYYMMDD-HHMMSS.pid,其中

xxx為日誌等級,例如INFO,ERROR,WARNING

YYYYMMDD為年月日

HHMMSS為小時,分鐘,秒

pid是進程id

7、glog.Fatal的預設行為是輸出Fatal等級日誌,並強制進程退出,不過可以自訂Fatal的行為

8、glog還提供了vmodule這樣進階的用法,有興趣可以研究一下。

glog代碼地址:

https://github.com/golang/glog

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.