Aracılığıyla paylaş


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:

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

Geçerli günlük düzeyleri , , verboseinfove warningdüzeylerini içerirerror.

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üğe kaydetmeyi etkinleştirme

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 günlükçü paketiyle günlüğe kaydetmeyi etkinleştirme

Aşağıdaki kod örneği, Azure SDK istemci kitaplıklarının hatalarını ayıklamak için @azure/günlükçü 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 ayrıntılı günlüğe kaydetme ayrıntısı denetimi 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ı kimlik bilgilerini bulun. ChainedTokenCredential kodunuzun önce deneme ManagedIdentityCredential (Azure App Service gibi üretim ortamları için) ve ardından hangi kimlik bilgilerinin başarılı olduğunu gösteren günlüklerle (yerel geliştirme için) geri AzureCliCredential dönerek kimlik doğrulama yöntemleri arasında sorunsuz geçiş yapmasına olanak tanır.

Önkoşullar

Ortam değişkeniyle günlüğe kaydetmeyi etkinleştirme

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 günlükçü paketiyle günlüğe kaydetmeyi etkinleştirme

Aşağıdaki kod örneği, Azure SDK istemci kitaplıklarının hatalarını ayıklamak için @azure/günlükçü 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 ayrıntılı günlüğe kaydetme ayrıntısı denetimi 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 bilgilerini bulma - kodunuzun ChainedTokenCredential kimlik doğrulama yöntemleri arasında sorunsuz bir şekilde geçiş yapmasını sağlar; önce deneme ManagedIdentityCredential (Azure App Service gibi üretim ortamları için) ve ardından hangi kimlik bilgilerinin başarılı olduğunu gösteren günlüklerle (yerel geliştirme için) geri AzureCliCredential döner.

Ek kaynaklar