Sdílet prostřednictvím


Konfigurace protokolování v klientských knihovnách Azure SDK pro JavaScript

Tento článek vysvětluje, jak nakonfigurovat protokolování v knihovnách sady Azure SDK pro JavaScript. Povolení protokolování pomáhá diagnostikovat problémy s ověřováním, řešit potíže s přihlašovacími údaji a získat přehled o operacích se sadou SDK.

Pokud chcete povolit protokolování, můžete použít některou z následujících možností:

  • Nastavte proměnnou AZURE_LOG_LEVEL=verbose prostředí tak, aby se zapnulo protokolování.
  • Použijte balíček ve zdrojovém @azure/logger kódu.

Mezi platné úrovně protokolu patří verbose, info, warninga error.

Poznámka:

Kód služby Azure Storage uvedený v tomto článku předpokládá, že prostředek úložiště je nakonfigurovaný s příslušnými rolemi Microsoft Entra. Další informace: Autorizace přístupu k objektům blob pomocí Microsoft Entra ID.

Požadavky

  • Předplatné Azure: Vytvořte si ho zdarma.
  • Node.js LTS
  • Volitelný vývojářský nástroj, jako je Azure CLI , který se používá k ověřování v místním vývojovém prostředí. Pokud chcete vytvořit potřebný kontext, přihlaste se pomocí Azure CLI.

Povolení protokolování pomocí proměnné prostředí

Spusťte aplikaci s proměnnou prostředí, abyste mohli jednoduše povolit protokolování.

AZURE_LOG_LEVEL=verbose node index.js

Nastavení proměnných prostředí

Proměnné prostředí můžete také přidat do .env souboru v kořenovém adresáři projektu. Vytvořte soubor s názvem .env a přidejte následující obsah.

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>

Povolení protokolování pomocí balíčku protokolovacího nástroje ve zdrojovém kódu

Následující ukázka kódu používá balíček @azure/logger k ladění klientských knihoven sady Azure SDK.

Konfigurace protokolování pro konkrétní služby

Kromě nastavení globální úrovně protokolu můžete nakonfigurovat různé úrovně protokolů pro konkrétní služby Azure přímo ve vašem kódu:

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

Tento přístup poskytuje podrobnou kontrolu nad podrobnostmi protokolování při práci s více službami Azure ve stejné aplikaci.

  1. Vytvořte index.js pomocí následujícího kódu.

    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. Vytvořte projekt a nainstalujte závislosti npm.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @azure/logger
    
  3. Přihlaste se ke svému předplatnému Azure v místním prostředí pomocí Azure CLI.

    az login
    
  4. Spusťte aplikaci se souborem proměnné prostředí. Možnost --env-file byla zavedena v Node.js 20.6.0.

    node --env-file .env index.js
    
  5. Ve výstupu vyhledejte úspěšné přihlašovací údaje. ChainedTokenCredential umožňuje vašemu kódu bezproblémově přepínat mezi metodami ověřování, nejprve se pokusíte ManagedIdentityCredential (pro produkční prostředí, jako je Azure App Service), a pak se vrátíte zpět AzureCliCredential (pro místní vývoj) s protokoly, které ukazují, které přihlašovací údaje byly úspěšné.

Požadavky

  • Předplatné Azure: Vytvořte si ho zdarma.
  • Node.js LTS
  • TypeScript
  • Nepovinný ověřovací nástroj, jako je Azure CLI , který se používá k ověřování v místním vývojovém prostředí. Pokud chcete vytvořit potřebný kontext, přihlaste se pomocí Azure CLI.

Povolení protokolování pomocí proměnné prostředí

Spusťte aplikaci s proměnnou prostředí, abyste mohli jednoduše povolit protokolování.

AZURE_LOG_LEVEL=verbose node index.js

Nastavení proměnných prostředí

Proměnné prostředí můžete také přidat do .env souboru v kořenovém adresáři projektu. Vytvořte soubor s názvem .env a přidejte následující obsah.

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>

Povolení protokolování pomocí balíčku protokolovacího nástroje ve zdrojovém kódu

Následující ukázka kódu používá balíček @azure/logger k ladění klientských knihoven sady Azure SDK.

Konfigurace protokolování pro konkrétní služby

Kromě nastavení globální úrovně protokolu můžete nakonfigurovat různé úrovně protokolů pro konkrétní služby Azure přímo ve vašem kódu:

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

Tento přístup poskytuje podrobnou kontrolu nad podrobnostmi protokolování při práci s více službami Azure ve stejné aplikaci.

  1. Vytvořte index.ts pomocí následujícího kódu.

    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. Vytvořte projekt a nainstalujte závislosti npm.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @types/node @azure/logger
    
  3. Přihlaste se ke svému předplatnému Azure v místním prostředí pomocí Azure CLI.

    az login
    
  4. Sestavte aplikaci.

    tsc
    
  5. Spusťte aplikaci se souborem proměnné prostředí. Možnost --env-file byla zavedena v Node.js 20.6.0.

    node --env-file .env index.js
    
  6. Vyhledejte ve výstupu úspěšné přihlašovací údaje – ChainedTokenCredential umožní vašemu kódu bezproblémově přepínat mezi metodami ověřování, nejprve se pokusíte ManagedIdentityCredential (pro produkční prostředí, jako je Azure App Service), a pak se vrátíte do AzureCliCredential (pro místní vývoj) s protokoly, které ukazují, které přihlašovací údaje proběhly úspěšně.

Dodatečné zdroje