Alibaba Cloud SDK V1.0 for Go permet de configurer un logger sur un client SDK pour journaliser chaque appel d'API.
Configuration du logger
Paramètres
|
Paramètre |
Description |
|
level |
Niveau de journalisation. Définissez cette valeur sur un niveau tel que info, debug ou warn. Valeur par défaut : info. |
|
channel |
Canal de journalisation. Valeur par défaut : AlibabaCloud. |
|
out |
Destination de sortie des journaux. La valeur doit être un objet implémentant l'interface io.writer. |
|
templete |
Modèle contrôlant le format de sortie des journaux. Valeur par défaut : |
Exemple de code
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()
// Use the AccessKey ID and AccessKey secret of the Resource Access Management (RAM) user.
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)
}
// Configure a logger in the SDK client. If you call this operation, the logging feature is enabled by default.
// level: the log level. Default value: info.
// channel: the data source of the log. Default value: AlibabaCloud.
// out: the output path of the log. The value is an object that can implement the io.writer interface.
// template: the log template. If you do not specify this parameter, the default value `{time} {channel}: "{method} {uri} HTTP/{version}" {code} {cost} {hostname}` is used.
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() // Enable the logging feature. If a logger does not exist in the SDK client, a default logger is created and configured.
client.SetTemplate(templete) // Configure the log template. If a logger does not exist in the SDK client, a default logger is created and configured.
Exemple de journal
[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
Variables configurables dans le modèle
|
Variable |
Description |
|
{channel} |
Canal de journalisation. |
|
{host} |
Hôte de la requête. |
|
{time} |
Horodatage au format ISO 8601, affiché en GMT. |
|
{method} |
Méthode de la requête. |
|
{uri} |
URI de la requête. |
|
{version} |
Version du protocole. |
|
{target} |
Cible de la requête (chemin et chaîne de requête). |
|
{hostname} |
Nom d'hôte de la cible de la requête. |
|
{code} |
Code d'état de la réponse, si disponible. |
|
{error} |
Message d'erreur, le cas échéant. Omis en l'absence d'erreur. |
|
{req_headers} |
En-têtes de la requête. |
|
{res_headers} |
En-têtes de la réponse. |
|
{pid} |
ID du processus. |
|
{cost} |
Durée de la requête. |
|
{start_time} |
Heure de début de la requête. |
|
{res_body} |
Corps de la réponse. |