免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)中的log該如何理解-創(chuàng)新互聯(lián)

這篇文章給大家介紹Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)中的log該如何理解,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)建站成立于2013年,我們提供高端成都網(wǎng)站建設(shè)、成都網(wǎng)站制作公司、成都網(wǎng)站設(shè)計(jì)公司、網(wǎng)站定制、成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)、小程序設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、seo優(yōu)化服務(wù),提供專(zhuān)業(yè)營(yíng)銷(xiāo)思路、內(nèi)容策劃、視覺(jué)設(shè)計(jì)、程序開(kāi)發(fā)來(lái)完成項(xiàng)目落地,為成都公路鉆孔機(jī)企業(yè)提供源源不斷的流量和訂單咨詢(xún)。

Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)中的log介紹
1.log
1.1使用Logger
log包定義了Logger類(lèi)型,該類(lèi)型提供了一些格式化輸出的方法。
本包也提供了一個(gè)預(yù)定義的"標(biāo)準(zhǔn)"logger,可以通過(guò)調(diào)用Print系列(Print|Printf|Println)、Fatal系列(Fatal|Fatalf|fatalln)和Panic系列(Panic|Panicf|PanicLn)來(lái)使用,比自行創(chuàng)建一個(gè)logger對(duì)象更容易使用。
例如:我們可以像下面的代碼一樣,直接通過(guò)log包來(lái)調(diào)用上岸提到的方法,默認(rèn)它們會(huì)把日志信息大隱刀終端界面。

package mainimport (    "log")func main() {    log.Println("這是一條很普通的日志。")    v := "很普通的"    log.Printf("這是一條%s日志。\n", v)    log.Fatalln("這是一條會(huì)觸發(fā)fatal的日志。")    log.Panicln("這是一條會(huì)觸發(fā)panic的日志。")}結(jié)果:2020/02/06 21:57:13 這是一條很普通的日志。2020/02/06 21:57:13 這是一條很普通的日志。2020/02/06 21:57:13 這是一條會(huì)觸發(fā)fatal的日志。Process finished with exit code 1

logger會(huì)打印每條日志信息的日期、時(shí)間,默認(rèn)輸出到系統(tǒng)的標(biāo)準(zhǔn)錯(cuò)誤。
Fatal系列函數(shù)會(huì)寫(xiě)入日志信息后調(diào)用os.Exit(1)。
Panic系列函數(shù)會(huì)在寫(xiě)入日志信息后panic。
1.2配置logger
1.2.1標(biāo)準(zhǔn)logger的配置
默認(rèn)情況下的logger只會(huì)提供日志的時(shí)間信息,但是很多情況下,我們希望得到更多信息,比如記錄該日志的文件名和行號(hào)等。
log標(biāo)準(zhǔn)庫(kù)中為我們提供了定制這些設(shè)置的方法。
log標(biāo)準(zhǔn)庫(kù)中的Flags函數(shù)會(huì)返回標(biāo)準(zhǔn)logger的輸出配置,而SetFlags函數(shù)是用來(lái)設(shè)置標(biāo)準(zhǔn)logger的輸出配置。
func Flags() int
func SetFlags(flag int)
flag選項(xiàng)
log標(biāo)準(zhǔn)庫(kù)提供了如下的flag選項(xiàng),它們是一系列定義好的常量。
const (
 // 控制輸出日志信息的細(xì)節(jié),不能控制輸出的順序和格式。
 // 輸出的日志在每一項(xiàng)后會(huì)有一個(gè)冒號(hào)分隔:例如2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message
 Ldate    = 1 << iota  // 日期:2009/01/23
 Ltime            // 時(shí)間:01:23:23
 Lmicroseconds        // 微秒級(jí)別的時(shí)間:01:23:23.123123(用于增強(qiáng)Ltime位)
 Llongfile          // 文件全路徑名+行號(hào): /a/b/c/d.go:23
 Lshortfile          // 文件名+行號(hào):d.go:23(會(huì)覆蓋掉Llongfile)
 LUTC             // 使用UTC時(shí)間
 LstdFlags  = Ldate | Ltime // 標(biāo)準(zhǔn)logger的初始值
)

package mainimport (    "log")func main() {    //設(shè)置logger    log.SetFlags(log.Llongfile | log.Lmicroseconds | log.Ldate)    log.Println("這是一條很普通的日志。")}結(jié)果:2020/02/06 22:20:40.508109 /Users/tongchao/Desktop/gopath/src/test/test.go:10: 這是一條很普通的日志。Process finished with exit code 0

1.2.2配置日志前綴
log標(biāo)準(zhǔn)庫(kù)中還提供了關(guān)于日志信息前綴的兩個(gè)方法:
func Prefix() string //查看標(biāo)準(zhǔn)logger的輸出前綴
func SetPrefix(prefix string) //設(shè)置輸出前綴

package mainimport (    "log")func main() {    //設(shè)置logger    log.SetFlags(log.Llongfile | log.Lmicroseconds | log.Ldate)    log.Println("這是一條很普通的日志。")    log.SetPrefix("[前綴信息]")    log.Println("這是一條很普通的日志。")}結(jié)果:2020/02/06 22:25:27.654416 /Users/tongchao/Desktop/gopath/src/test/test.go:10: 這是一條很普通的日志。[前綴信息]2020/02/06 22:25:27.654601 /Users/tongchao/Desktop/gopath/src/test/test.go:12: 這是一條很普通的日志。Process finished with exit code 0

這樣可以在日志信息中添加指定的前綴,方便之后對(duì)日志信息進(jìn)行檢索和處理。
1.2.3配置日志輸出位置
func SetOutput(w io.Writer)

setOutput函數(shù)用來(lái)設(shè)置標(biāo)準(zhǔn)logger的輸出目的地,默認(rèn)是標(biāo)準(zhǔn)錯(cuò)誤輸出。
把日志輸出到同目錄下的xx.log文件中。

package mainimport (    "fmt"    "log"    "os")func main() {    logFile, err := os.OpenFile("./xx.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)    if err != nil {        fmt.Println("open log file failed, err:", err)        return    }    log.SetOutput(logFile)    log.SetFlags(log.Llongfile | log.Lmicroseconds | log.Ldate)    log.Println("這是一條很普通的日志。")    log.SetPrefix("[前綴信息]")    log.Println("這是一條很普通的日志。")}

結(jié)果:
xx.log中內(nèi)容為
2020/02/06 22:30:22.369892 /Users/tongchao/Desktop/gopath/src/test/test.go:17: 這是一條很普通的日志。
[前綴信息]2020/02/06 22:30:22.370229 /Users/tongchao/Desktop/gopath/src/test/test.go:19: 這是一條很普通的日志。
如果要使用標(biāo)準(zhǔn)的logger,會(huì)把上面的配置操作寫(xiě)到init函數(shù)中

func init() {    logFile, err := os.OpenFile("./xx.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)    if err != nil {        fmt.Println("open log file failed, err:", err)        return    }    log.SetOutput(logFile)    log.SetFlags(log.Llongfile | log.Lmicroseconds | log.Ldate)}

1.3創(chuàng)建logger
log標(biāo)準(zhǔn)庫(kù)中還提供了創(chuàng)建新logger對(duì)象的構(gòu)造函數(shù)New,支持我們自己創(chuàng)建logger示例。
New函數(shù)的簽名如下:
func New(out io.Writer, prefix string, flag int) *Logger
New創(chuàng)建一個(gè)Logger對(duì)象。其中,參數(shù)out設(shè)置日志信息寫(xiě)入的目的地。參數(shù)prefix會(huì)添加到生成的每一條日志前面。參數(shù)flag定義日志的屬性(時(shí)間、文件等等)。

package mainimport (    "log"    "os")func main() {    logger := log.New(os.Stdout, "<New>", log.Lshortfile|log.Ldate|log.Ltime)    logger.Println("這是自定義的logger記錄的日志。")}

結(jié)果:
<New>2020/02/06 22:34:17 test.go:10: 這是自定義的logger記錄的日志。

Process finished with exit code 0
Go內(nèi)置的log庫(kù)功能有限,不能滿(mǎn)足不同級(jí)別日志的情況,我們?cè)趯?shí)際的項(xiàng)目中根據(jù)自己的需要選擇第三方日志庫(kù),如logrus--https://github.com/sirupsen/logrus,zap--https://github.com/uber-go/zap等

關(guān)于Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)中的log該如何理解就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)頁(yè)名稱(chēng):Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)中的log該如何理解-創(chuàng)新互聯(lián)
文章URL:http://newbst.com/article0/dgijoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、靜態(tài)網(wǎng)站、服務(wù)器托管、網(wǎng)站設(shè)計(jì)軟件開(kāi)發(fā)、小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管