Udostępnij za pomocą


Konfigurowanie rejestrowania w bibliotekach klienta zestawu Azure SDK dla języka JavaScript

W tym artykule wyjaśniono, jak skonfigurować rejestrowanie w bibliotekach zestawu Azure SDK dla języka JavaScript. Włączenie rejestrowania ułatwia diagnozowanie problemów z uwierzytelnianiem, rozwiązywanie problemów z łańcuchami poświadczeń i uzyskiwanie wglądu w operacje zestawu SDK.

Aby włączyć rejestrowanie, możesz użyć jednej z poniższych opcji:

  • Ustaw zmienną środowiskową, AZURE_LOG_LEVEL=verbose aby włączyć rejestrowanie.
  • @azure/logger Użyj pakietu w kodzie źródłowym.

Prawidłowe poziomy dziennika obejmują verbose, info, warning i error.

Uwaga / Notatka

Kod usługi Azure Storage przedstawiony w tym artykule zakłada, że zasób magazynu został skonfigurowany z odpowiednimi rolami Microsoft Entra. Dowiedz się więcej: Autoryzowanie dostępu do obiektów blob przy użyciu identyfikatora Entra firmy Microsoft.

Wymagania wstępne

  • Subskrypcja platformy Azure: utwórz bezpłatnie
  • Node.js LTS
  • Opcjonalne narzędzie deweloperskie, takie jak Azure CLI, używane do uwierzytelniania w lokalnym środowisku deweloperskim. Aby utworzyć niezbędny kontekst, zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure.

Włączanie rejestrowania za pomocą zmiennej środowiskowej

Uruchom aplikację przy użyciu zmiennej środowiskowej, aby w prosty sposób włączyć rejestrowanie.

AZURE_LOG_LEVEL=verbose node index.js

Ustawianie zmiennych środowiskowych

Możesz również dodać zmienne środowiskowe do .env pliku w katalogu głównym projektu. Utwórz plik o nazwie .env i dodaj następującą zawartość.

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>

Włączanie rejestrowania za pomocą pakietu logger w kodzie źródłowym

Poniższy fragment kodu używa pakietu @azure/logger do debugowania bibliotek klienckich Azure SDK.

Konfigurowanie rejestrowania dla określonych usług

Oprócz ustawienia globalnego poziomu dziennika można skonfigurować różne poziomy dziennika dla określonych usług platformy Azure bezpośrednio w kodzie:

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

Takie podejście zapewnia precyzyjną kontrolę nad szczegółowością rejestrowania podczas pracy z wieloma usługami Azure w tej samej aplikacji.

  1. Utwórz index.js przy użyciu następującego kodu.

    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. Utwórz projekt i zainstaluj zależności npm.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @azure/logger
    
  3. Zaloguj się do subskrypcji platformy Azure w środowisku lokalnym przy użyciu interfejsu wiersza polecenia platformy Azure.

    az login
    
  4. Uruchom aplikację z plikiem zmiennej środowiskowej. Opcja --env-file została wprowadzona w wersji Node.js 20.6.0.

    node --env-file .env index.js
    
  5. Znajdź pomyślne poświadczenie w danych wyjściowych. ChainedTokenCredential umożliwia bezproblemowe przełączanie kodu między metodami uwierzytelniania, najpierw próba ManagedIdentityCredential (w przypadku środowisk produkcyjnych, takich jak usługa Azure App Service), a następnie powrót do AzureCliCredential (w przypadku programowania lokalnego) z dziennikami pokazującymi, które poświadczenia zakończyły się pomyślnie.

Wymagania wstępne

  • Subskrypcja platformy Azure: utwórz bezpłatnie
  • Node.js LTS
  • TypeScript
  • Opcjonalnie, narzędzie uwierzytelniania, takie jak Azure CLI, używane do uwierzytelniania w lokalnym środowisku deweloperskim. Aby utworzyć niezbędny kontekst, zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure.

Włączanie rejestrowania za pomocą zmiennej środowiskowej

Uruchom aplikację przy użyciu zmiennej środowiskowej, aby w prosty sposób włączyć rejestrowanie.

AZURE_LOG_LEVEL=verbose node index.js

Ustawianie zmiennych środowiskowych

Możesz również dodać zmienne środowiskowe do .env pliku w katalogu głównym projektu. Utwórz plik o nazwie .env i dodaj następującą zawartość.

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>

Włączanie rejestrowania za pomocą pakietu logger w kodzie źródłowym

Poniższy fragment kodu używa pakietu @azure/logger do debugowania bibliotek klienckich Azure SDK.

Konfigurowanie rejestrowania dla określonych usług

Oprócz ustawienia globalnego poziomu dziennika można skonfigurować różne poziomy dziennika dla określonych usług platformy Azure bezpośrednio w kodzie:

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

Takie podejście zapewnia precyzyjną kontrolę nad szczegółowością rejestrowania podczas pracy z wieloma usługami Azure w tej samej aplikacji.

  1. Utwórz index.ts przy użyciu następującego kodu.

    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. Utwórz projekt i zainstaluj zależności npm.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @types/node @azure/logger
    
  3. Zaloguj się do subskrypcji platformy Azure w środowisku lokalnym przy użyciu interfejsu wiersza polecenia platformy Azure.

    az login
    
  4. Skompiluj aplikację.

    tsc
    
  5. Uruchom aplikację z plikiem zmiennej środowiskowej. Opcja --env-file została wprowadzona w wersji Node.js 20.6.0.

    node --env-file .env index.js
    
  6. Znajdź pomyślne poświadczenie w danych wyjściowych — ChainedTokenCredential umożliwia kodowi płynne przełączanie się między metodami uwierzytelniania, najpierw próbując ManagedIdentityCredential (dla środowisk produkcyjnych, takich jak Azure App Service), a następnie przechodząc do AzureCliCredential (dla lokalnego rozwoju), z dziennikami pokazującymi, które poświadczenie zakończyło się pomyślnie.

Dodatkowe zasoby