第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么本地 Golang 記錄器是全局變量時(shí)不記錄?

為什么本地 Golang 記錄器是全局變量時(shí)不記錄?

Go
泛舟湖上清波郎朗 2022-01-10 16:48:54
我有一些非常簡(jiǎn)單的代碼,我將一些錯(cuò)誤信息記錄到文件中。package mainimport (    "log"    "os")var testLogger *log.Loggerfunc init() {    logFile, openErr1 := os.OpenFile("/home/doug/logs/test.log", os.O_CREATE|os.O_RDWR|os.O_APPEND, 0666)    if openErr1 != nil {        log.Println("Uh oh! Could not open log file.")    }    defer logFile.Close()    testLogger = log.New(logFile, "PREFIX", log.Lshortfile|log.Ldate|log.Ltime)}func main() {    testLogger.Println("meep meep")}但是,每當(dāng)我在運(yùn)行程序后打開(kāi)文件時(shí),它總是為空的。我究竟做錯(cuò)了什么?
查看完整描述

1 回答

?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊

正如 Doug 已經(jīng)指出的那樣,該init()函數(shù)將始終在 之前調(diào)用main(),并且順序如此。這意味著當(dāng)init()完成時(shí),隊(duì)列中的defersinit()將執(zhí)行,在這種情況下關(guān)閉你的日志。


在大多數(shù)情況下,您根本不打算打電話log.Close()。請(qǐng)注意,所有Fatal功能log都將os.Exit:


https://golang.org/src/log/log.go?s=9087:9131#L295


并且os.Exit明確說(shuō)defers 的文檔沒(méi)有運(yùn)行


// Exit causes the current program to exit with the given status code.

// Conventionally, code zero indicates success, non-zero an error.

// The program terminates immediately; deferred functions are not run.

func Exit(code int) {

因此,您可能會(huì)說(shuō)標(biāo)準(zhǔn)庫(kù)會(huì)log.Close()在發(fā)生致命錯(cuò)誤時(shí)強(qiáng)制您不要這樣做。有點(diǎn)暗示這沒(méi)什么大不了的。


Panic但是請(qǐng)注意,函數(shù)將defer在退出之前運(yùn)行紅色函數(shù)。


查看完整回答
反對(duì) 回復(fù) 2022-01-10
  • 1 回答
  • 0 關(guān)注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)