亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Go中GCF的日志不包含日志級別

Go中GCF的日志不包含日志級別

Go
森欄 2023-07-10 15:08:49
我正在嘗試從用 Go 編寫的 Cloud Function 將信息/錯誤日志發送到 StackDriver Logging on GCP,但是所有日志都沒有日志級別分配。我從https://github.com/GoogleCloudPlatform/golang-samples/blob/master/functions/helloworld/hello_logging.go創建了函數 來演示問題。
查看完整描述

5 回答

?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

您嘗試做的事情是不可能的:

  • 輸出到stdoutstderr 的日志沒有關聯的日志級別。

  • 內部系統消息具有DEBUG日志級別。

您可能需要的是使用Logging API,特別是Log Levels部分。

如果這對您不起作用,您可以嘗試使用node.js代替,go因為它當前分別使用和向INFO和級別發出日志。ERRORconsole.log()console.error()


查看完整回答
反對 回復 2023-07-10
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

我創建了一個包來做到這一點:?github.com/ncruces/go-gcp/glog

它適用于 App Engine、Kubernetes Engine、Cloud Run 和 Cloud Functions。支持設置日志記錄級別、請求/跟蹤元數據和結構化日志記錄。

用法:

func HelloWorld(w http.ResponseWriter, r *http.Request) {

? ? glog.Infoln("Hello logs")

? ? glog.Errorln("Hello logs")

? ? // or, to set request metadata:

? ? logger := glog.ForRequest(r)

? ? logger.Infoln("Hello logs")

}


查看完整回答
反對 回復 2023-07-10
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

您可以使用允許您設置日志級別的外部庫。使用 logrus 設置最小日志級別(您可以通過在環境變量中提供日志級別來改進此代碼),并使用 joonix 來設置 fluidd 格式化程序。(第 25 行)

一個注意點。第11行,我將logrus包重命名為log?log "github.com/sirupsen/logrus"?因此,不使用log標準庫,而是使用logrus庫。有時很無聊......您可以簡單地用 logrus 替換 log 以避免所有混亂。

Joonix 是一個 FluentD 格式化程序,用于將日志轉換為 Stackdriver 可攝取的格式。


查看完整回答
反對 回復 2023-07-10
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

我也嘗試為此創建一個包。如果您使用 logrus ( https://github.com/sirupsen/logrus ),那么這可能會有所幫助:

https://github.com/tekkamanendless/gcfhook

我在生產中使用它,并且運行得很好。


查看完整回答
反對 回復 2023-07-10
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

我推薦https://github.com/apsystole/log。它也與 log 和 logrus 兼容,但它是一個小型的零依賴模塊,與兩個現有答案中使用的庫不同,后者將 400 多個模塊作為其依賴項(喘息......我只是在看go mod graph)。



查看完整回答
反對 回復 2023-07-10
  • 5 回答
  • 0 關注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號