2017-01-30 20 views
1

我正在開發Go語言,echo框架。在golang中,如何識別日誌中的線程或類似內容?

我正在設計一個記錄器,我想記錄相當於線程ID的日誌,但我不知道一個好方法。

例如,如果登錄處理在多次訪問的同時進行,一次成功,一次失敗 通過查看失敗的日誌無法確定。

檢查後,在Go語言goroutine的id存在,但我不應該得到它, 原來有人說,goroutine在同一個線程中是不一樣的。

如何識別線程? 還是有一個包把它們放在日誌中?

對不起,如果我使用了錯誤的表達方式,因爲英語不是我的母語。 謝謝。

+0

另請參閱http://stackoverflow.com/questions/33947545/go-log-thread-id-in-gorilla-handler – nos

回答

2

GoLang中沒有用於執行例程的線程ID。

你可能要做的是創建一個context並附加一個唯一的ID(最好是請求ID)。讓所有的函數都接受上下文。讓記錄器庫取上下文並打印唯一的ID。通過以這種方式使用上下文,您甚至可以共享日誌信息

0

我個人更喜歡log4j在去Log4J in Go

它使用起來非常簡單,而且它具有基於時間和大小的文件旋轉等所有功能。另外,您可以存儲包含文件名和行號的完整錯誤堆棧。

相關問題