Pencatat digunakan untuk mencatat log setiap pemanggilan API dan dikonfigurasi menggunakan klien SDK di Alibaba Cloud SDK V1.0 untuk Go. Topik ini menjelaskan cara mengonfigurasi pencatat.
Konfigurasi pencatat
Parameter
Parameter | Deskripsi |
level | Prefiks dari log. Kami menyarankan Anda mengatur nilainya ke level log, seperti info, debug, dan warn. Nilai default: info. |
channel | Sumber data dari log. Nilai default: AlibabaCloud. |
out | Jalur keluaran log. Nilainya harus berupa objek yang dapat mengimplementasikan antarmuka io.writer. |
templete | Template log yang digunakan untuk mengonfigurasi isi log. Nilai default: `{time} {channel}: "{method} {uri} HTTP/{version}" {code} {cost} {hostname}`. Untuk informasi lebih lanjut, lihat bagian Variabel yang dapat dikonfigurasi dalam template dari topik ini. |
Contoh kode
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()
// Gunakan AccessKey ID dan Rahasia AccessKey dari pengguna Resource Access Management (RAM).
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)
}
// Konfigurasikan pencatat dalam klien SDK. Jika Anda memanggil operasi ini, fitur pencatatan akan diaktifkan secara default.
// level: level log. Nilai default: info.
// channel: sumber data dari log. Nilai default: AlibabaCloud.
// out: jalur keluaran log. Nilainya adalah objek yang dapat mengimplementasikan antarmuka io.writer.
// template: template log. Jika Anda tidak menentukan parameter ini, nilai default `{time} {channel}: "{method} {uri} HTTP/{version}" {code} {cost} {hostname}` digunakan.
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() // Aktifkan fitur pencatatan. Jika pencatat tidak ada dalam klien SDK, pencatat default dibuat dan dikonfigurasi.
client.SetTemplate(templete) // Konfigurasikan template log. Jika pencatat tidak ada dalam klien SDK, pencatat default dibuat dan dikonfigurasi.Contoh log
[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.comVariabel yang dapat dikonfigurasi dalam template
Variabel | Deskripsi |
{channel} | Sumber data dari log. |
{host} | Host yang mengirim permintaan. |
{time} | Waktu yang mengikuti standar ISO 8601 dan ditampilkan dalam GMT. |
{method} | Metode permintaan |
{uri} | URI permintaan. |
{version} | Versi protokol. |
{target} | Alamat permintaan, yang terdiri dari parameter jalur dan parameter kueri dalam URI. |
{hostname} | Nama host yang mengirim permintaan. |
{code} | Kode status dari respons. Jika tidak ada kode status yang dikembalikan, variabel ini tidak ditampilkan. |
{error} | Pesan kesalahan. Jika tidak ada pesan kesalahan yang dikembalikan, variabel ini tidak ditampilkan. |
{req_headers} | Header permintaan |
{res_headers} | Header respons. |
{pid} | ID proses. |
{cost} | Durasi permintaan. |
{start_time} | Waktu mulai permintaan. |
{res_body} | Badan respons. |