Delen via


Logboekregistratie configureren in Azure SDK-clientbibliotheken voor JavaScript

In dit artikel wordt uitgelegd hoe u logboekregistratie configureert in Azure SDK-bibliotheken voor JavaScript. Door logboekregistratie in te schakelen, kunt u verificatieproblemen vaststellen, referentieketens oplossen en inzicht krijgen in SDK-bewerkingen.

Als u logboekregistratie wilt inschakelen, kunt u een van de onderstaande opties gebruiken:

  • Stel de AZURE_LOG_LEVEL=verbose omgevingsvariabele in om logboekregistratie in te schakelen.
  • Gebruik het @azure/logger pakket in uw broncode.

Geldige logboekniveaus zijn onder andere verbose, info, warningen error.

Opmerking

In de Azure Storage-code die in dit artikel wordt weergegeven, wordt ervan uitgegaan dat de opslagresource is geconfigureerd met de juiste Microsoft Entra-rollen. Meer informatie: Toegang tot blobs autoriseren met behulp van Microsoft Entra-id.

Vereiste voorwaarden

  • Een Azure-abonnement: maak er gratis een
  • Node.js LTS
  • Optioneel, een hulpprogramma voor ontwikkelaars, zoals Azure CLI dat wordt gebruikt voor verificatie in een lokale ontwikkelomgeving. Meld u aan met de Azure CLI om de benodigde context te maken.

Logboekregistratie met omgevingsvariabele inschakelen

Start de toepassing met de omgevingsvariabele voor een eenvoudige manier om logboekregistratie in te schakelen.

AZURE_LOG_LEVEL=verbose node index.js

Omgevingsvariabelen instellen

U kunt ook omgevingsvariabelen toevoegen aan een .env bestand in de hoofdmap van uw project. Maak een bestand met de naam .env en voeg de volgende inhoud toe.

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>

Logboekregistratie met logboekregistratiepakket in broncode inschakelen

In het volgende codevoorbeeld wordt het pakket @azure/logger gebruikt om fouten op te sporen in de Azure SDK-clientbibliotheken.

Logboekregistratie configureren voor specifieke services

Naast het instellen van een globaal logboekniveau kunt u verschillende logboekniveaus voor specifieke Azure-services rechtstreeks in uw code configureren:

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

Met deze benadering hebt u gedetailleerde controle over de uitgebreidheid van logboekregistratie bij het werken met meerdere Azure-services in dezelfde toepassing.

  1. Maak index.js met de volgende code.

    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. Maak het project en installeer de npm-afhankelijkheden.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @azure/logger
    
  3. Meld u aan bij uw Azure-abonnement in uw lokale omgeving met Azure CLI.

    az login
    
  4. Voer de app uit met een omgevingsvariabelebestand. De --env-file optie is geïntroduceerd in Node.js 20.6.0.

    node --env-file .env index.js
    
  5. Zoek de geslaagde referentie in de uitvoer. ChainedTokenCredential hiermee kan uw code naadloos schakelen tussen verificatiemethoden, eerst proberen ManagedIdentityCredential (voor productieomgevingen zoals Azure App Service) en vervolgens terugkeren naar AzureCliCredential (voor lokale ontwikkeling), met logboeken die aangeven welke referentie is geslaagd.

Vereiste voorwaarden

  • Een Azure-abonnement: maak er gratis een
  • Node.js LTS
  • TypeScript
  • Optioneel, een verificatieprogramma zoals Azure CLI dat wordt gebruikt voor verificatie in een lokale ontwikkelomgeving. Meld u aan met de Azure CLI om de benodigde context te maken.

Logboekregistratie met omgevingsvariabele inschakelen

Start de toepassing met de omgevingsvariabele voor een eenvoudige manier om logboekregistratie in te schakelen.

AZURE_LOG_LEVEL=verbose node index.js

Omgevingsvariabelen instellen

U kunt ook omgevingsvariabelen toevoegen aan een .env bestand in de hoofdmap van uw project. Maak een bestand met de naam .env en voeg de volgende inhoud toe.

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>

Logboekregistratie met logboekregistratiepakket in broncode inschakelen

In het volgende codevoorbeeld wordt het pakket @azure/logger gebruikt om fouten op te sporen in de Azure SDK-clientbibliotheken.

Logboekregistratie configureren voor specifieke services

Naast het instellen van een globaal logboekniveau kunt u verschillende logboekniveaus voor specifieke Azure-services rechtstreeks in uw code configureren:

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

Met deze benadering hebt u gedetailleerde controle over de uitgebreidheid van logboekregistratie bij het werken met meerdere Azure-services in dezelfde toepassing.

  1. Maak index.ts met de volgende code.

    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. Maak het project en installeer de npm-afhankelijkheden.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @types/node @azure/logger
    
  3. Meld u aan bij uw Azure-abonnement in uw lokale omgeving met Azure CLI.

    az login
    
  4. Bouw de toepassing.

    tsc
    
  5. Voer de app uit met een omgevingsvariabelebestand. De --env-file optie is geïntroduceerd in Node.js 20.6.0.

    node --env-file .env index.js
    
  6. Zoek de geslaagde referentie in de uitvoer: de ChainedTokenCredential code kan naadloos schakelen tussen verificatiemethoden, eerst proberen ManagedIdentityCredential (voor productieomgevingen zoals Azure App Service) en vervolgens terugkeren naar AzureCliCredential (voor lokale ontwikkeling), met logboeken die laten zien welke referenties zijn geslaagd.

Aanvullende bronnen