ロガーは、各 API 呼び出しのログを記録するために使用され、Go 用 Alibaba Cloud SDK V1.0 の SDK クライアントを使用して設定されます。このトピックでは、ロガーを設定する方法について説明します。
ロガーの設定
パラメーター
パラメーター | 説明 |
level | ログのプレフィックス。 info、debug、warn などのログレベルに値を設定することをお勧めします。デフォルト値:info。 |
channel | ログのデータソース。デフォルト値:AlibabaCloud。 |
out | ログの出力パス。値は、io.writer インターフェースを実装できるオブジェクトである必要があります。 |
templete | ログコンテンツの設定に使用されるログテンプレート。デフォルト値:`{time} {channel}: "{method} {uri} HTTP/{version}" {code} {cost} {hostname}`。詳細については、このトピックのテンプレートで設定できる変数セクションをご参照ください。 |
サンプルコード
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 (Resource Access Management) ユーザーの AccessKey ID と AccessKey シークレットを使用します。
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)
}
// SDK クライアントでロガーを設定します。この操作を呼び出すと、ログ機能はデフォルトで有効になります。
// level:ログレベル。デフォルト値:info。
// channel:ログのデータソース。デフォルト値:AlibabaCloud。
// out:ログの出力パス。値は、io.writer インターフェースを実装できるオブジェクトです。
// template:ログテンプレート。このパラメーターを指定しない場合、デフォルト値 `{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() // ログ機能を有効にします。SDK クライアントにロガーが存在しない場合は、デフォルトのロガーが作成および設定されます。
client.SetTemplate(templete) // ログテンプレートを設定します。SDK クライアントにロガーが存在しない場合は、デフォルトのロガーが作成および設定されます。サンプルログ
[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テンプレートで設定できる変数
変数 | 説明 |
{channel} | ログのデータソース。 |
{host} | リクエストを送信するホスト。 |
{time} | ISO 8601 標準に準拠し、GMT で表示される時刻。 |
{method} | リクエストメソッド。 |
{uri} | リクエスト URI。 |
{version} | プロトコルバージョン。 |
{target} | URI のパス パラメーターとクエリ パラメーターで構成されるリクエストアドレス。 |
{hostname} | リクエストを送信するホストの名前。 |
{code} | レスポンスのステータスコード。ステータスコードが返されない場合、この変数は表示されません。 |
{error} | エラーメッセージ。エラーメッセージが返されない場合、この変数は表示されません。 |
{req_headers} | リクエストヘッダー。 |
{res_headers} | レスポンスヘッダー。 |
{pid} | プロセス ID。 |
{cost} | リクエストの期間。 |
{start_time} | リクエストの開始時刻。 |
{res_body} | レスポンスボディ。 |