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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

尋找用于記錄的調(diào)用或線程 ID

尋找用于記錄的調(diào)用或線程 ID

Go
catspeake 2021-06-11 02:46:53
我正在重新編寫我們用 golang 編寫的小型 Web 應(yīng)用程序的日志記錄。由于外部要求,日志記錄已被隔離在一個地方,因此我們以后可能會切換到日志記錄服務(wù)器。(不是我的想法 - 我保證......)盡管如此,我們現(xiàn)在能夠記錄常見的事情,如日期/時間、行號、用戶和消息,主要使用標(biāo)準(zhǔn)庫的一部分和我們傳遞的用戶/會話結(jié)構(gòu)大約。但是 - 問題來了 - 在較低級別的方法中,為了記錄而傳遞會話只是為了獲取用戶名是一種浪費。所以我想找到其他東西來在日志文件中找到一個特定的請求。我確信有一些我沒有想到的明顯的東西。到目前為止的想法:Java 日志框架可以打印出線程 id,這在這種情況下也足夠了。只是它在golang中被稱為其他東西?以某種方式使用戶/會話結(jié)構(gòu)可以全局訪問。(除非有一個線程用作查找鍵,否則仍然需要傳遞會話 ID。回到想法 1。)無論如何放棄并傳遞用戶/會話結(jié)構(gòu)。不要在最低級別記錄錯誤,而只在用戶/會話結(jié)構(gòu)可用時記錄錯誤。不過行號不會那么好。我們將 gorilla 的一部分用于網(wǎng)絡(luò)事物,除此之外主要是標(biāo)準(zhǔn)庫。對此有何建議和想法?
查看完整描述

1 回答

?
MMMHUHU

TA貢獻1834條經(jīng)驗 獲得超8個贊

由于濫用的可能性很高,因此無法訪問 Go 中當(dāng)前 goroutine 的標(biāo)識符。這可能看起來很嚴(yán)厲,但這實際上保留了 Go 包生態(tài)系統(tǒng)的一個重要屬性:是否啟動一個新的 goroutine 來做某事并不重要。


也就是說,對于函數(shù) F 的任何方法:


F()

幾乎完全等同于:


done := make(chan struct{})

go func() {

   defer close(done)

   F()

}

<-done

(“幾乎”來自這樣一個事實,如果 F 恐慌,恐慌將不會被原始 goroutine 捕獲)。


這也適用于日志記錄 - 如果您使用當(dāng)前的 goroutine 來推斷當(dāng)前用戶,則任何如上所述啟動新 goroutine 的代碼都會破壞該假設(shè),并且您的日志記錄將不包含預(yù)期的信息。


您需要傳遞某種上下文。


查看完整回答
反對 回復(fù) 2021-06-28
  • 1 回答
  • 0 關(guān)注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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