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.comtemplete支援配置的變數
變數 | 描述 |
{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} | 響應主體 |