Go語言常用的打log方式詳解
文章介紹了3種常用的打log的方式,并賦上了注解
先寫上注意事項,三種方法建議分開測,因為可能在第一種的Fatal會終止運行,Fatal和Panic和Print的區(qū)別在于,Fatal會保存日志并終止程序,Panic會保存日志并丟出異常終止程序,Print會保存日志但是程序繼續(xù)
main.go
package main import ( "log" "bytes" "fmt" "os" "github.com/astaxie/beego/logs" ) func main() { //1.日志寫入一段緩存里 var buf bytes.Buffer logger := log.New(&buf, "logger: ", log.Llongfile)//三個參數(shù)對應輸出對象,前綴,文件名然后整合成前綴 logger.Print("Hello, log file!") //實際log信息 fmt.Println(&buf) //2.日志寫入一段文件里,執(zhí)行完刷新工程,會有文件debug.log打開來看 fileName := "debug.log" //在工程路徑下和src同級,也可以寫絕對路徑,不過要注意轉(zhuǎn)義符 logFile,err := os.Create(fileName) //創(chuàng)建該文件,返回句柄 defer logFile.Close() //確保文件在該函數(shù)執(zhí)行完以后關(guān)閉 if err != nil { log.Fatalln("open file error !") } //庫里的log包不存在級別,只有Print,F(xiàn)atal,Panic三種,想要7種級別,可以用syslog包或者框架 debugLog := log.New(logFile,"",log.Llongfile) debugLog.Print("找到一個低級bug,低級別的日志報告,執(zhí)行debug記錄后繼續(xù)執(zhí)行") debugLog.Fatal("發(fā)現(xiàn)一個嚴重bug,日志已記錄,程序在此終止") debugLog.Panic("哎呀,我沒有被執(zhí)行,好慘") //3.使用beego框架的log包進行l(wèi)og處理 ,對應7種級別 logInstance:=logs.GetLogger() logInstance.Println("this is a message of http") //an official log.Logger with prefix ORM logs.GetLogger("ORM").Println("this is a message of orm") logs.Debug("my book is bought in the year of ", 2016) logs.Info("this %s cat is %v years old", "yellow", 3) logs.Warn("json is a type of kv like", map[string]int{"key": 2016}) logs.Error(1024, "is a very", "good game") logs.Critical("oh,crash") logs.Notice("fuck") logs.Alert("alert") logs.Emergency("emergency") }
第二種
main.go
package main import ( "os" "log" ) func main() { file, err := os.OpenFile("./testLog/test.log", os.O_CREATE | os.O_WRONLY | os.O_APPEND,os.ModePerm) if err != nil { log.Fatalln(err) } logger := log.New(file, "", log.LstdFlags|log.Llongfile) logger.Println("日志1.") logger.Println("日志23") }
總結(jié)
到此這篇關(guān)于Go語言常用的打log方式的文章就介紹到這了,更多相關(guān)Go語言log詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
goland2020.2.x永久激活碼破解詳細教程親測可用(Windows Linux Mac)
這篇文章主要介紹了goland2020.2.x永久激活碼破解詳細教程親測可用(Windows Linux Mac) ,對goland激活碼注冊碼相關(guān)知識感興趣的朋友跟隨小編一起看看吧2020-11-11golang的時區(qū)和神奇的time.Parse的使用方法
這篇文章主要介紹了golang的時區(qū)和神奇的time.Parse的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04詳解Go語言中自定義結(jié)構(gòu)體能作為map的key嗎
在Go中,引用類型具有動態(tài)的特性,可能會被修改或指向新的數(shù)據(jù),這就引發(fā)了一個問題—能否將包含引用類型的自定義結(jié)構(gòu)體作為map的鍵呢,本文就來和大家想想講講2023-06-06詳解golang channel有無緩沖區(qū)的區(qū)別
這篇文章主要給大家介紹了golang channel有無緩沖區(qū)的區(qū)別,無緩沖是同步的,有緩沖是異步的,文中通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下2024-01-01使用go net實現(xiàn)簡單的redis通信協(xié)議
本文主要介紹了go net實現(xiàn)簡單的redis通信協(xié)議,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12