全部產品
Search
文件中心

Alibaba Cloud SDK:配置日誌

更新時間:Mar 28, 2025

Go V1.0 SDK通過Client配置logger,用於記錄OpenAPI每次的調用情況。本文為您詳細介紹如何配置logger。

logger配置

logger參數說明

參數

說明

level

日誌首碼,建議使用記錄層級,比如info、debug、warn等,預設值為info。

channel

通道,預設值為AlibabaCloud。

out

日誌輸出路徑,所需參數是一個實現了io.writer介面的對象。

templete

日誌模板,用於配置日誌記錄的內容,預設值為 `{time} {channel}: "{method} {uri} HTTP/{version}" {code} {cost} {hostname}`。支援配置的內容,請參見templete支援配置的變數

範例程式碼

import (
	"os"

	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
	ecs "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
)

func main() {
	config := sdk.NewConfig()
	// 使用RAM使用者AccessKeyID和AccessKeySecret
	credential := credentials.NewAccessKeyCredential(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
	client, err := ecs.NewClientWithOptions("cn-hangzhou", config, credential)
	if err != nil {
		panic(err)
	}

	// 設定用戶端的日誌, 當您調用該方法,預設為您開啟日誌功能
	// level: 日誌等級,預設為 info
	// channel: channel,預設為 AlibabaCloud
	// out: 日誌的輸出路徑。一個實現了io.writer介面的對象
	// templete: 日誌的模板, 若不輸入,則預設為 `{time} {channel}: "{method} {uri} HTTP/{version}" {code} {cost} {hostname}`
	defaultLoggerTemplate := `{time} {channel}: "{method} {uri} HTTP/{version}" {code} {cost} {host}`
	client.SetLogger("info", "AlibabaCloud", os.Stdout, defaultLoggerTemplate)

	request := ecs.CreateDescribeRegionsRequest()
	client.DescribeRegions(request)
}
client.OpenLogger()            // 開啟日誌功能,若此時用戶端的logger不存在, 則建立一個配置一個預設的logger
client.SetTemplate(templete)   // 設定日誌模板,若此時用戶端的 logger 不存在, 則建立一個配置一個預設的 logger     

日誌範例

[INFO]client.go:574: 2024-06-17 17:01:25 AlibabaCloud: "POST /?AccessKeyId=LTAI****************&Action=DescribeRegions&Format=JSON&RegionId=cn-hangzhou&Signature=bC773M84gqLqk93PO8vd%2Bmx%2FAmM%3D&SignatureMethod=HMAC-SHA1&SignatureNonce=9f8f6dd196e9663a343150a81de0986f&SignatureType=&SignatureVersion=1.0&Timestamp=2024-06-17T09%3A01%3A21Z&Version=2014-05-26 HTTP/1.1" 200 4.1605408s ecs-cn-hangzhou.aliyuncs.com

templete支援配置的變數

變數

描述

{channel}

日誌的對象

{host}

請求主機

{time}

GMT中的 ISO 8601日期

{method}

要求方法

{uri}

請求的URI

{version}

協議版本

{target}

請求目標 (path + query)

{hostname}

發送請求的電腦的主機名稱

{code}

響應的狀態碼(如果可用)

{error}

任何錯誤訊息(如果有)

{req_headers}

要求標頭

{res_headers}

回應標頭

{pid}

PID

{cost}

耗時

{start_time}

開始時間

{res_body}

響應主體