簡體   English   中英

Zap 堆棧跟蹤與谷歌雲上的錯誤消息

[英]Zap stack traces vs. error messages on google cloud

我正在使用 zapp 在托管在谷歌雲上的服務上記錄錯誤消息,並且看到雖然成功記錄了錯誤,但存儲在谷歌雲日志的“消息”字段中的文本是堆棧跟蹤,而不是錯誤我已記錄的消息。

示例代碼:

var log *zap.Logger
if err := doStuff(); err != nil {
    log.Error(<error message I want to log>, zap.Error(err))
}

這很好用,除了 google cloud logging 和 stackdriver 將使用在結構化日志的message字段中調用zap.Error捕獲的堆棧跟蹤。 我定義的消息出現在msg字段中,但前者似乎是主要顯示在日志控制台中並由 stackdriver 用於索引錯誤的消息。

這意味着當通過控制台瀏覽日志和錯誤時,我只看到堆棧跟蹤,沒有任何相關錯誤字符串的指示。

棘手的是我不知道這個“問題”是雲端還是 zapp 端。 我花了一些時間在 Zapp 中四處尋找無濟於事,並且沒有想法。

默認情況下,zap將消息放在msg鍵下,stacktrace在stacktrace下,並將日志行作為json打印到stdout。 您只需在本地運行二進制文件,就能看到實際的效果。

您的日志記錄系統大概在打印這些日志行時對其進行處理。 它將讀取它們,解析它們,並可能進行一些重組或添加一些元數據,然后將它們發送到其他地方以進行保存或更多處理。

由於zap很有可能按預期工作,因此您需要查看處理日志的系統。 期望他們看起來如何? 它對任何特定的鍵都有特殊的規則嗎? 會自己注入任何密鑰嗎?

請注意,您可以將zap配置為對其所有標准字段使用不同的鍵。

要在 GCP 上正確有效地記錄,首先,您必須使用Logging 的 LogEntry設置適當的 Zap 鍵

如果您正在尋找一個工作示例,我在這里編寫一個簡單的 Zap 配置: https://github.com/uber-go/zap/discussions/1110#discussioncomment-2955566

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM