配置日志

更新时间:

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=LTAI5tBcJhhsAarUXXXXXXXX&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}

响应主体