Bagikan melalui


Mengonfigurasi pengelogan di pustaka klien Azure SDK untuk JavaScript

Artikel ini menjelaskan cara mengonfigurasi pengelogan di pustaka Azure SDK untuk JavaScript. Mengaktifkan pengelogan membantu Anda mendiagnosis masalah autentikasi, memecahkan masalah rantai kredensial, dan mendapatkan visibilitas ke dalam operasi SDK.

Untuk mengaktifkan pengelogan, Anda dapat menggunakan salah satu opsi di bawah ini:

  • Atur AZURE_LOG_LEVEL=verbose variabel lingkungan untuk mengaktifkan pengelogan.
  • @azure/logger Gunakan paket dalam kode sumber Anda.

Tingkat log yang valid meliputi verbose, , infowarning, dan error.

Nota

Kode Azure Storage yang ditampilkan dalam artikel ini mengasumsikan sumber daya penyimpanan telah dikonfigurasi dengan peran Microsoft Entra yang sesuai. Pelajari selengkapnya: Mengotorisasi akses ke blob menggunakan ID Microsoft Entra.

Prasyarat

Mengaktifkan pengelogan dengan variabel lingkungan

Mulai aplikasi dengan variabel lingkungan untuk cara sederhana untuk mengaktifkan pengelogan.

AZURE_LOG_LEVEL=verbose node index.js

Atur variabel lingkungan

Anda juga dapat menambahkan variabel lingkungan ke .env file di akar proyek Anda. Buat file bernama .env dan tambahkan konten berikut.

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>

Mengaktifkan pengelogan dengan paket pencatat dalam kode sumber

Sampel kode berikut menggunakan paket @azure/pencatat untuk men-debug pustaka klien Azure SDK.

Mengonfigurasi pengelogan untuk layanan tertentu

Selain mengatur tingkat log global, Anda dapat mengonfigurasi tingkat log yang berbeda untuk layanan Azure tertentu langsung dalam kode Anda:

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

Pendekatan ini memberi Anda kontrol halus atas verbositas pengelogan saat bekerja dengan beberapa layanan Azure dalam aplikasi yang sama.

  1. Buat index.js dengan kode berikut.

    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. Buat proyek dan instal dependensi npm.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @azure/logger
    
  3. Masuk ke langganan Azure Anda di lingkungan lokal Anda dengan Azure CLI.

    az login
    
  4. Jalankan aplikasi dengan file variabel lingkungan. Opsi --env-file diperkenalkan di Node.js 20.6.0.

    node --env-file .env index.js
    
  5. Temukan kredensial yang berhasil dalam output. ChainedTokenCredential memungkinkan kode Anda beralih dengan lancar di antara metode autentikasi, pertama-tama mencoba ManagedIdentityCredential (untuk lingkungan produksi seperti Azure App Service) dan kemudian kembali ke AzureCliCredential (untuk pengembangan lokal), dengan log yang menunjukkan kredensial mana yang berhasil.

Prasyarat

Mengaktifkan pengelogan dengan variabel lingkungan

Mulai aplikasi dengan variabel lingkungan untuk cara sederhana untuk mengaktifkan pengelogan.

AZURE_LOG_LEVEL=verbose node index.js

Atur variabel lingkungan

Anda juga dapat menambahkan variabel lingkungan ke .env file di akar proyek Anda. Buat file bernama .env dan tambahkan konten berikut.

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>

Mengaktifkan pengelogan dengan paket pencatat dalam kode sumber

Sampel kode berikut menggunakan paket @azure/pencatat untuk men-debug pustaka klien Azure SDK.

Mengonfigurasi pengelogan untuk layanan tertentu

Selain mengatur tingkat log global, Anda dapat mengonfigurasi tingkat log yang berbeda untuk layanan Azure tertentu langsung dalam kode Anda:

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

Pendekatan ini memberi Anda kontrol halus atas verbositas pengelogan saat bekerja dengan beberapa layanan Azure dalam aplikasi yang sama.

  1. Buat index.ts dengan kode berikut.

    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. Buat proyek dan instal dependensi npm.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @types/node @azure/logger
    
  3. Masuk ke langganan Azure Anda di lingkungan lokal Anda dengan Azure CLI.

    az login
    
  4. Bangun aplikasi.

    tsc
    
  5. Jalankan aplikasi dengan file variabel lingkungan. Opsi --env-file diperkenalkan di Node.js 20.6.0.

    node --env-file .env index.js
    
  6. Temukan kredensial yang berhasil dalam output - ChainedTokenCredential memungkinkan kode Anda beralih dengan mulus di antara metode autentikasi, pertama-tama mencoba ManagedIdentityCredential (untuk lingkungan produksi seperti Azure App Service) lalu kembali ke AzureCliCredential (untuk pengembangan lokal), dengan log yang menunjukkan kredensial mana yang berhasil.

Sumber daya tambahan