配置日志
更新时间:
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} | 响应主体 |
文档内容是否对您有帮助?