Partager via


Configurer la journalisation dans les bibliothèques clientes du Kit de développement logiciel (SDK) Azure pour JavaScript

Cet article explique comment configurer la journalisation dans les bibliothèques du Kit de développement logiciel (SDK) Azure pour JavaScript. L’activation de la journalisation vous aide à diagnostiquer les problèmes d’authentification, à résoudre les chaînes d’informations d’identification et à obtenir une visibilité sur les opérations du SDK.

Pour activer la journalisation, vous pouvez utiliser l’une des options ci-dessous :

  • Définissez la variable d’environnement pour activer la AZURE_LOG_LEVEL=verbose journalisation.
  • Utilisez le @azure/logger package dans votre code source.

Les niveaux de journal valides incluent verbose, info, warninget error.

Note

Le code stockage Azure indiqué dans cet article suppose que la ressource de stockage a été configurée avec les rôles Microsoft Entra appropriés. En savoir plus : Autoriser l’accès aux objets blob à l’aide de l’ID Microsoft Entra.

Prerequisites

  • Un abonnement Azure : Créez-en un gratuitement
  • Node.js LTS
  • Facultatif, un outil de développement tel qu’Azure CLI utilisé pour l’authentification dans un environnement de développement local. Pour créer le contexte nécessaire, connectez-vous avec Azure CLI.

Activer la journalisation avec la variable d’environnement

Démarrez l’application avec la variable d’environnement pour un moyen simple d’activer la journalisation.

AZURE_LOG_LEVEL=verbose node index.js

Définir des variables d’environnement

Vous pouvez également ajouter des variables d’environnement à un .env fichier à la racine de votre projet. Créez un fichier nommé .env et ajoutez le contenu suivant.

AZURE_LOG_LEVEL=verbose
AZURE_CLIENT_ID=<YOUR_CLIENT_ID>
AZURE_STORAGE_ACCOUNT_NAME=<YOUR_STORAGE_ACCOUNT_NAME>
AZURE_STORAGE_CONTAINER_NAME=<YOUR_STORAGE_CONTAINER_NAME>

Activer la journalisation avec le package d’enregistreurs d’événements dans le code source

L’exemple de code suivant utilise le package @azure/enregistreur d’événements pour déboguer les bibliothèques clientes du Kit de développement logiciel (SDK) Azure.

Configurer la journalisation pour des services spécifiques

Outre la définition d’un niveau de journal global, vous pouvez configurer différents niveaux de journal pour des services Azure spécifiques directement dans votre code :

// Import service-specific setLogLevel functions
import { setLogLevel as setIdentityLogLevel } from "@azure/identity";
import { setLogLevel as setStorageLogLevel } from "@azure/storage-blob";

// Set different log levels for different services
setIdentityLogLevel("verbose");  // Detailed logs for identity operations
setStorageLogLevel("warning");   // Only warnings and errors for storage operations

Cette approche vous donne un contrôle précis sur la journalisation détaillée lors de l’utilisation de plusieurs services Azure dans la même application.

  1. Créez index.js avec le code suivant.

    import {
        ChainedTokenCredential,
        ManagedIdentityCredential,
        AzureCliCredential
    } from "@azure/identity";
    import { BlobServiceClient } from "@azure/storage-blob";
    import { AzureLogger, setLogLevel } from "@azure/logger";
    
    // Check required environment variables
    if (!process.env.AZURE_STORAGE_ACCOUNT_NAME) {
        throw new Error("AZURE_STORAGE_ACCOUNT_NAME environment variable is required");
    }
    
    if (!process.env.AZURE_STORAGE_CONTAINER_NAME) {
        throw new Error("AZURE_STORAGE_CONTAINER_NAME environment variable is required");
    }
    
    // Client ID is optional and only used in production environments
    // No need to check for its existence
    
    // Turn on debugging for all Azure SDKs   
    setLogLevel("verbose");
    
    // Configure the logger to use console.
    AzureLogger.log = (...args)=> {
        console.log(...args);
    };
    
    const credential = new ChainedTokenCredential(
        new ManagedIdentityCredential({ clientId: process.env.AZURE_CLIENT_ID }),
        new AzureCliCredential()
    );
    
    const blobServiceClient = new BlobServiceClient(
        `https://${process.env.AZURE_STORAGE_ACCOUNT_NAME}.blob.core.windows.net`,
        credential
    );
    // get container properties
    const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME);
    
    async function main() {
        try {
            const properties = await containerClient.getProperties();
    
            console.log(properties);
        } catch (err) {
            const error = err;
            console.error("Error retrieving container properties:", error.message);
            throw error;
        }
    }
    
    main().catch((err) => {
        console.error("Error running sample:", err.message);
        process.exit(1);
    });
    
  2. Créez le projet et installez les dépendances npm.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @azure/logger
    
  3. Connectez-vous à votre abonnement Azure dans votre environnement local avec Azure CLI.

    az login
    
  4. Exécutez l’application avec un fichier de variable d’environnement. L’option --env-file a été introduite dans Node.js 20.6.0.

    node --env-file .env index.js
    
  5. Recherchez les informations d’identification réussies dans la sortie. ChainedTokenCredential permet à votre code de basculer en toute transparence entre les méthodes d’authentification, d’abord d’essayer ManagedIdentityCredential (pour les environnements de production comme Azure App Service), puis de revenir à AzureCliCredential (pour le développement local), avec des journaux montrant les informations d’identification réussies.

Prerequisites

Activer la journalisation avec la variable d’environnement

Démarrez l’application avec la variable d’environnement pour un moyen simple d’activer la journalisation.

AZURE_LOG_LEVEL=verbose node index.js

Définir des variables d’environnement

Vous pouvez également ajouter des variables d’environnement à un .env fichier à la racine de votre projet. Créez un fichier nommé .env et ajoutez le contenu suivant.

AZURE_LOG_LEVEL=verbose
AZURE_CLIENT_ID=<YOUR_CLIENT_ID>
AZURE_STORAGE_ACCOUNT_NAME=<YOUR_STORAGE_ACCOUNT_NAME>
AZURE_STORAGE_CONTAINER_NAME=<YOUR_STORAGE_CONTAINER_NAME>

Activer la journalisation avec le package d’enregistreurs d’événements dans le code source

L’exemple de code suivant utilise le package @azure/enregistreur d’événements pour déboguer les bibliothèques clientes du Kit de développement logiciel (SDK) Azure.

Configurer la journalisation pour des services spécifiques

Outre la définition d’un niveau de journal global, vous pouvez configurer différents niveaux de journal pour des services Azure spécifiques directement dans votre code :

// Import service-specific setLogLevel functions
import { setLogLevel as setIdentityLogLevel } from "@azure/identity";
import { setLogLevel as setStorageLogLevel } from "@azure/storage-blob";

// Set different log levels for different services
setIdentityLogLevel("verbose");  // Detailed logs for identity operations
setStorageLogLevel("warning");   // Only warnings and errors for storage operations

Cette approche vous donne un contrôle précis sur la journalisation détaillée lors de l’utilisation de plusieurs services Azure dans la même application.

  1. Créez index.ts avec le code suivant.

    import {
        ChainedTokenCredential,
        ManagedIdentityCredential,
        AzureCliCredential
    } from "@azure/identity";
    import { BlobServiceClient, ContainerGetPropertiesResponse } from "@azure/storage-blob";
    import { AzureLogger, setLogLevel } from "@azure/logger";
    
    // Check required environment variables
    if (!process.env.AZURE_STORAGE_ACCOUNT_NAME) {
        throw new Error("AZURE_STORAGE_ACCOUNT_NAME environment variable is required");
    }
    
    if (!process.env.AZURE_STORAGE_CONTAINER_NAME) {
        throw new Error("AZURE_STORAGE_CONTAINER_NAME environment variable is required");
    }
    
    // Client ID is optional and only used in production environments
    // No need to check for its existence
    
    // Turn on debugging for all Azure SDKs   
    setLogLevel("verbose");
    
    // Configure the logger to use console.log with TypeScript type safety
    AzureLogger.log = (...args: unknown[]): void => {
        console.log(...args);
    };
    
    const credential = new ChainedTokenCredential(
        new ManagedIdentityCredential({ clientId: process.env.AZURE_CLIENT_ID }),
        new AzureCliCredential()
    );
    
    const blobServiceClient = new BlobServiceClient(
        `https://${process.env.AZURE_STORAGE_ACCOUNT_NAME}.blob.core.windows.net`,
        credential
    );
    // get container properties
    const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME);
    
    async function main(): Promise<void> {
        try {
            const properties: ContainerGetPropertiesResponse = await containerClient.getProperties();
    
            console.log(properties);
        } catch (err) {
            const error = err as Error;
            console.error("Error retrieving container properties:", error.message);
            throw error;
        }
    }
    
    main().catch((err: Error) => {
        console.error("Error running sample:", err.message);
        process.exit(1);
    });
    
  2. Créez le projet et installez les dépendances npm.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @types/node @azure/logger
    
  3. Connectez-vous à votre abonnement Azure dans votre environnement local avec Azure CLI.

    az login
    
  4. Générez l’application.

    tsc
    
  5. Exécutez l’application avec un fichier de variable d’environnement. L’option --env-file a été introduite dans Node.js 20.6.0.

    node --env-file .env index.js
    
  6. Recherchez les informations d’identification réussies dans la sortie : le ChainedTokenCredential code permet à votre code de basculer en toute transparence entre les méthodes d’authentification, d’abord d’essayer ManagedIdentityCredential (pour les environnements de production comme Azure App Service), puis de revenir à AzureCliCredential (pour le développement local), avec des journaux indiquant les informations d’identification réussies.

Ressources supplémentaires