Dela via


Konfigurera loggning i Azure SDK-klientbibliotek för JavaScript

Den här artikeln beskriver hur du konfigurerar loggning i Azure SDK-bibliotek för JavaScript. Genom att aktivera loggning kan du diagnostisera autentiseringsproblem, felsöka autentiseringskedjor och få insyn i SDK-åtgärder.

Om du vill aktivera loggning kan du använda något av alternativen nedan:

  • AZURE_LOG_LEVEL=verbose Ställ in miljövariabeln för att aktivera loggning.
  • Använd paketet i källkoden @azure/logger .

Giltiga loggnivåer är verbose, info, warningoch error.

Anmärkning

Azure Storage-koden som visas i den här artikeln förutsätter att lagringsresursen har konfigurerats med lämpliga Microsoft Entra-roller. Läs mer: Auktorisera åtkomst till blobar med hjälp av Microsoft Entra-ID.

Förutsättningar

  • En Azure-prenumeration: Skapa en kostnadsfritt
  • Node.js LTS
  • Valfritt, ett utvecklarverktyg som Azure CLI som används för autentisering i en lokal utvecklingsmiljö. Om du vill skapa den nödvändiga kontexten loggar du in med Azure CLI.

Aktivera loggning med miljövariabel

Starta programmet med miljövariabeln för ett enkelt sätt att aktivera loggning.

AZURE_LOG_LEVEL=verbose node index.js

Ange miljövariabler

Du kan också lägga till miljövariabler i en .env fil i projektroten. Skapa en fil med namnet .env och lägg till följande innehåll.

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>

Aktivera loggning med loggningspaketet i källkoden

Följande kodexempel använder paketet @azure/logger för att felsöka Azure SDK-klientbiblioteken.

Konfigurera loggning för specifika tjänster

Förutom att ange en global loggnivå kan du konfigurera olika loggnivåer för specifika Azure-tjänster direkt i koden:

// 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

Den här metoden ger dig detaljerad kontroll över loggning av utförlighet när du arbetar med flera Azure-tjänster i samma program.

  1. Skapa index.js med följande kod.

    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. Skapa projektet och installera npm-beroendena.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @azure/logger
    
  3. Logga in på din Azure-prenumeration i din lokala miljö med Azure CLI.

    az login
    
  4. Kör appen med en miljövariabelfil. Alternativet --env-file introducerades i Node.js 20.6.0.

    node --env-file .env index.js
    
  5. Hitta de lyckade autentiseringsuppgifterna i utdata. ChainedTokenCredential tillåter din kod att smidigt växla mellan autentiseringsmetoder, först försöka ManagedIdentityCredential (för produktionsmiljöer som Azure App Service) och sedan falla tillbaka till AzureCliCredential (för lokal utveckling), med loggar som visar vilka autentiseringsuppgifter som lyckades.

Förutsättningar

Aktivera loggning med miljövariabel

Starta programmet med miljövariabeln för ett enkelt sätt att aktivera loggning.

AZURE_LOG_LEVEL=verbose node index.js

Ange miljövariabler

Du kan också lägga till miljövariabler i en .env fil i projektroten. Skapa en fil med namnet .env och lägg till följande innehåll.

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>

Aktivera loggning med loggningspaketet i källkoden

Följande kodexempel använder paketet @azure/logger för att felsöka Azure SDK-klientbiblioteken.

Konfigurera loggning för specifika tjänster

Förutom att ange en global loggnivå kan du konfigurera olika loggnivåer för specifika Azure-tjänster direkt i koden:

// 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

Den här metoden ger dig detaljerad kontroll över loggning av utförlighet när du arbetar med flera Azure-tjänster i samma program.

  1. Skapa index.ts med följande kod.

    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. Skapa projektet och installera npm-beroendena.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @types/node @azure/logger
    
  3. Logga in på din Azure-prenumeration i din lokala miljö med Azure CLI.

    az login
    
  4. Skapa programmet.

    tsc
    
  5. Kör appen med en miljövariabelfil. Alternativet --env-file introducerades i Node.js 20.6.0.

    node --env-file .env index.js
    
  6. Hitta den lyckade autentiseringsuppgiften i utdata – ChainedTokenCredential tillåter att din kod smidigt växlar mellan autentiseringsmetoder, först försöker ManagedIdentityCredential (för produktionsmiljöer som Azure App Service) och sedan faller tillbaka till AzureCliCredential (för lokal utveckling), med loggar som visar vilka autentiseringsuppgifter som lyckades.

Ytterligare resurser