JavaScript için Azure SDK istemci kitaplıklarında günlüğe kaydetmeyi yapılandırma

Bu makalede JavaScript için Azure SDK kitaplıklarında günlüğe kaydetmeyi yapılandırma işlemi açıklanmaktadır. Günlüğe kaydetmeyi etkinleştirmek, kimlik doğrulama sorunlarını tanılamanıza, kimlik bilgileri zincirlerini gidermenize ve SDK işlemlerine görünürlük kazanmanıza yardımcı olur.

Günlüğü etkinleştirmek için aşağıdaki seçeneklerden birini kullanabilirsiniz:

  • Günlük kaydını etkinleştirmek için AZURE_LOG_LEVEL=verbose ortam değişkenini ayarlayın.
  • @azure/logger Paketi kaynak kodunuzda kullanın.

Geçerli günlük düzeyleri verbose, info, warning ve error düzeyleridir.

Uyarı

Bu makalede gösterilen Azure Depolama kodu, depolama kaynağının uygun Microsoft Entra rolleri ile yapılandırıldığını varsayar. Daha fazla bilgi edinin: Microsoft Entra Id kullanarak bloblara erişimi yetkilendirme.

Önkoşullar

Ortam değişkeniyle günlük kaydını etkinleştirin

Günlüğü etkinleştirmenin basit bir yolu için uygulamayı ortam değişkeniyle başlatın.

AZURE_LOG_LEVEL=verbose node index.js

Ortam değişkenlerini belirleme

Ayrıca, proje kökünüzdeki bir .env dosyaya ortam değişkenleri de ekleyebilirsiniz. adlı .env bir dosya oluşturun ve aşağıdaki içeriği ekleyin.

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>

Kaynak kodunda logger paketiyle günlüklemeyi etkinleştirme

Aşağıdaki kod örneği, Azure SDK istemci kitaplıklarında hata ayıklamak için @azure/logger paketini kullanır.

Belirli hizmetler için günlük kaydını yapılandırma

Genel günlük düzeyini ayarlamaya ek olarak, belirli Azure hizmetleri için farklı günlük düzeylerini doğrudan kodunuz içinde yapılandırabilirsiniz:

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

Bu yaklaşım, aynı uygulamada birden çok Azure hizmetiyle çalışırken günlük kaydı ayrıntı düzeyi üzerinde ayrıntılı denetim olanağı sağlar.

  1. Aşağıdaki kodla oluşturun index.js .

    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. Projeyi oluşturun ve npm bağımlılıklarını yükleyin.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @azure/logger
    
  3. Azure CLI ile yerel ortamınızda Azure aboneliğinizde oturum açın.

    az login
    
  4. Uygulamayı bir ortam değişkeni dosyasıyla çalıştırın. Seçenek --env-file Node.js 20.6.0'da sunulmuştur.

    node --env-file .env index.js
    
  5. Çıktıda başarılı olan kimlik bilgisini bulun. ChainedTokenCredential, kodunuzun kimlik doğrulama yöntemleri arasında sorunsuzca geçiş yapmasını sağlar; önce ManagedIdentityCredential’i dener (Azure App Service gibi üretim ortamları için), ardından AzureCliCredential’ye geri döner (yerel geliştirme için) ve günlük kayıtları hangi kimlik bilgilerinin başarılı olduğunu gösterir.

Önkoşullar

Ortam değişkeniyle günlük kaydını etkinleştirin

Günlüğü etkinleştirmenin basit bir yolu için uygulamayı ortam değişkeniyle başlatın.

AZURE_LOG_LEVEL=verbose node index.js

Ortam değişkenlerini belirleme

Ayrıca, proje kökünüzdeki bir .env dosyaya ortam değişkenleri de ekleyebilirsiniz. adlı .env bir dosya oluşturun ve aşağıdaki içeriği ekleyin.

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>

Kaynak kodunda logger paketi kullanarak günlük kaydını etkinleştirme

Aşağıdaki kod örneği, Azure SDK istemci kitaplıklarında hata ayıklamak için @azure/logger paketini kullanır.

Belirli hizmetler için günlüğe kaydetmeyi yapılandırma

Genel günlük düzeyini ayarlamaya ek olarak, belirli Azure hizmetleri için farklı günlük düzeylerini doğrudan kodunuz içinde yapılandırabilirsiniz:

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

Bu yaklaşım, aynı uygulamada birden çok Azure hizmetiyle çalışırken günlük kaydı ayrıntı düzeyi üzerinde ayrıntılı denetim sağlar.

  1. Aşağıdaki kodla oluşturun index.ts .

    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. Projeyi oluşturun ve npm bağımlılıklarını yükleyin.

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @types/node @azure/logger
    
  3. Azure CLI ile yerel ortamınızda Azure aboneliğinizde oturum açın.

    az login
    
  4. Uygulamayı oluşturun.

    tsc
    
  5. Uygulamayı bir ortam değişkeni dosyasıyla çalıştırın. Seçenek --env-file Node.js 20.6.0'da sunulmuştur.

    node --env-file .env index.js
    
  6. Çıktıda başarılı kimlik bilgisini bulun - ChainedTokenCredential, kodunuzun kimlik doğrulama yöntemleri arasında sorunsuz bir şekilde geçiş yapmasını sağlar; önce ManagedIdentityCredential’i dener (Azure App Service gibi üretim ortamları için), ardından AzureCliCredential’ye geri döner (yerel geliştirme için) ve günlüklerde hangi kimlik bilgisinin başarılı olduğunu gösterir.

Ek kaynaklar