本文介紹Go運行環境的日誌列印相關內容。
列印日誌
您可以使用context.GetLogger()
方法列印日誌,也可以使用log庫或fmt庫中的方法列印日誌,或者其他寫入到stdout或stderr的日誌庫列印日誌。
使用context.GetLogger()方法列印日誌
使用該方法列印的每條日誌中都包含記錄層級、RequestId、時間、檔案名稱和行號等資訊,程式碼範例如下所示。
package main
import (
"context"
"github.com/aliyun/fc-runtime-go-sdk/fc"
"github.com/aliyun/fc-runtime-go-sdk/fccontext"
)
func HandleRequest(ctx context.Context) (string, error) {
fctx, _ := fccontext.FromContext(ctx)
fctx.GetLogger().Debug("this is Debug log")
fctx.GetLogger().Debugf("Hi, %s\n", "this is Debugf log")
fctx.GetLogger().Info("this is Info log")
fctx.GetLogger().Infof("Hi, %s\n", "this is Infof log")
fctx.GetLogger().Warn("this is Warn log")
fctx.GetLogger().Warnf("Hi, %s\n", "this is Warnf log")
fctx.GetLogger().Error("this is Error log")
fctx.GetLogger().Errorf("Hi, %s\n", "this is Errorf log")
return "Hello world", nil
}
func main() {
fc.Start(HandleRequest)
}
輸出的日誌內容如下所示。
FC Invoke Start RequestId: 1e9a87a5-fe0f-4904-a6f4-1d2728514129
2023-09-06T04:28:41.79Z d32c01bc-4397-4f52-a9ca-e374c28f96c1 [DEBUG] main.go:16: this is Debug log
2023-09-06T04:28:41.79Z d32c01bc-4397-4f52-a9ca-e374c28f96c1 [DEBUG] main.go:17: Hi, this is Debugf log
2023-09-06T04:28:41.79Z d32c01bc-4397-4f52-a9ca-e374c28f96c1 [INFO] main.go:19: this is Info log
2023-09-06T04:28:41.79Z d32c01bc-4397-4f52-a9ca-e374c28f96c1 [INFO] main.go:20: Hi, this is Infof log
2023-09-06T04:28:41.79Z d32c01bc-4397-4f52-a9ca-e374c28f96c1 [WARN] main.go:22: this is Warn log
2023-09-06T04:28:41.79Z d32c01bc-4397-4f52-a9ca-e374c28f96c1 [WARN] main.go:23: Hi, this is Warnf log
2023-09-06T04:28:41.791Z d32c01bc-4397-4f52-a9ca-e374c28f96c1 [ERROR] main.go:25: this is Error log
2023-09-06T04:28:41.791Z d32c01bc-4397-4f52-a9ca-e374c28f96c1 [ERROR] main.go:26: Hi, this is Errorf log
FC Invoke End RequestId: 1e9a87a5-fe0f-4904-a6f4-1d2728514129
使用log庫列印日誌
使用該方法列印的日誌庫包含日期和時間資訊,程式碼範例如下所示。
package main
import (
"log"
"github.com/aliyun/fc-runtime-go-sdk/fc"
)
func HandleRequest() (string, error) {
log.Println("hello world")
return "hello world", nil
}
func main() {
fc.Start(HandleRequest)
}
輸出的日誌內容如下所示。
FC Invoke Start RequestId: a15f8f85-9ed3-47c9-a61c-75678db61831
2022/02/17 04:29:02.228870 hello world
FC Invoke End RequestId: a15f8f85-9ed3-47c9-a61c-75678db61831
執行摘要
Go運行時會記錄每次調用的Start和End行,以及執行摘要資訊。執行摘要的參數說明如下。
參數 | 說明 |
Request ID | 調用的唯一請求ID。 |
代碼校正碼 | 調用所使用程式碼封裝的校正碼。 |
函數執行時間 | 處理常式實際運行所花費的時間。 |
函數計費時間 | 針對調用計費的時間量。 |
函數設定記憶體 | 分配給函數的記憶體量。 |
實際使用記憶體 | 函數實際使用的最大記憶體量。 |