Go語(yǔ)言常用的打log方式詳解
文章介紹了3種常用的打log的方式,并賦上了注解
先寫上注意事項(xiàng),三種方法建議分開測(cè),因?yàn)榭赡茉诘谝环N的Fatal會(huì)終止運(yùn)行,Fatal和Panic和Print的區(qū)別在于,Fatal會(huì)保存日志并終止程序,Panic會(huì)保存日志并丟出異常終止程序,Print會(huì)保存日志但是程序繼續(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)//三個(gè)參數(shù)對(duì)應(yīng)輸出對(duì)象,前綴,文件名然后整合成前綴
logger.Print("Hello, log file!") //實(shí)際log信息
fmt.Println(&buf)
//2.日志寫入一段文件里,執(zhí)行完刷新工程,會(huì)有文件debug.log打開來看
fileName := "debug.log" //在工程路徑下和src同級(jí),也可以寫絕對(duì)路徑,不過要注意轉(zhuǎn)義符
logFile,err := os.Create(fileName) //創(chuàng)建該文件,返回句柄
defer logFile.Close() //確保文件在該函數(shù)執(zhí)行完以后關(guān)閉
if err != nil {
log.Fatalln("open file error !")
}
//庫(kù)里的log包不存在級(jí)別,只有Print,F(xiàn)atal,Panic三種,想要7種級(jí)別,可以用syslog包或者框架
debugLog := log.New(logFile,"",log.Llongfile)
debugLog.Print("找到一個(gè)低級(jí)bug,低級(jí)別的日志報(bào)告,執(zhí)行debug記錄后繼續(xù)執(zhí)行")
debugLog.Fatal("發(fā)現(xiàn)一個(gè)嚴(yán)重bug,日志已記錄,程序在此終止")
debugLog.Panic("哎呀,我沒有被執(zhí)行,好慘")
//3.使用beego框架的log包進(jìn)行l(wèi)og處理 ,對(duì)應(yīng)7種級(jí)別
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語(yǔ)言常用的打log方式的文章就介紹到這了,更多相關(guān)Go語(yǔ)言log詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go處理JSON數(shù)據(jù)的實(shí)現(xiàn)
本文主要介紹了Go處理JSON數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
Go語(yǔ)言學(xué)習(xí)之WaitGroup用法詳解
Go語(yǔ)言中的?WaitGroup?和?Java?中的?CyclicBarrier、CountDownLatch?非常類似。本文將詳細(xì)為大家講講WaitGroup的用法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-06-06
詳解golang中發(fā)送http請(qǐng)求的幾種常見情況
這篇文章主要介紹了詳解golang中發(fā)送http請(qǐng)求的幾種常見情況,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
如何將Golang數(shù)組slice轉(zhuǎn)為逗號(hào)分隔的string字符串
這篇文章主要介紹了如何將Golang數(shù)組slice轉(zhuǎn)為逗號(hào)分隔的string字符串問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Go語(yǔ)言copy()實(shí)現(xiàn)切片復(fù)制
本文主要介紹了Go語(yǔ)言copy()實(shí)現(xiàn)切片復(fù)制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
go語(yǔ)言使用range來接收通道里面的數(shù)據(jù)
本文主要介紹了go語(yǔ)言使用range來接收通道里面的數(shù)據(jù),for ... range?循環(huán)會(huì)一直從通道中接收值,直到通道關(guān)閉并且所有值都被接收完畢,下面就來介紹一下,感興趣的可以了解一下2025-04-04

