共用方式為


在 JavaScript 的 Azure SDK 用戶端程式庫中設定記錄

本文說明如何在適用於 JavaScript 的 Azure SDK 程式庫中設定記錄。 啟用記錄可協助您診斷驗證問題、疑難排解認證鏈結,以及瞭解 SDK 作業。

若要啟用記錄,您可以使用下列任一選項:

  • 設定 AZURE_LOG_LEVEL=verbose 環境變數以開啟記錄。
  • 在原始程式碼中使用套件 @azure/logger

有效的日誌層次包括 verbose、 、 infowarningerror

備註

本文中顯示的 Azure 儲存體程式碼假設儲存體資源已設定適當的 Microsoft Entra 角色。 深入了解: 使用 Microsoft Entra ID 授權存取 Blob

先決條件

  • Azure 訂用帳戶:免費建立訂用帳戶
  • Node.js LTS
  • 選擇性,開發人員工具,例如 Azure CLI ,用於本機開發環境中的驗證。 若要建立必要的內容,請使用 Azure CLI 登入。

使用環境變數啟用記錄

使用環境變數啟動應用程式,以啟用記錄的簡單方法。

AZURE_LOG_LEVEL=verbose node index.js

設定環境變數

您也可以將環境變數 .env 新增至專案根目錄中的檔案。 建立名為的檔案 .env ,並新增下列內容。

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>

在原始程式碼中使用記錄器套件啟用記錄

下列程式碼範例會使用 @azure/logger 套件來偵錯 Azure SDK 用戶端程式庫。

設定特定服務的記錄

除了設定全域記錄層級之外,您也可以直接在程式碼中為特定 Azure 服務設定不同的記錄層級:

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

此方法可讓您在相同的應用程式中使用多個 Azure 服務時,精細控制記錄詳細程度。

  1. 使用下列程式碼建立 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. 建立專案並安裝 npm 相依性。

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @azure/logger
    
  3. 使用 Azure CLI 登入本機環境中的 Azure 訂用帳戶。

    az login
    
  4. 使用環境變數檔案執行應用程式。 此 --env-file 選項是在 Node.js 20.6.0 中引進的。

    node --env-file .env index.js
    
  5. 在輸出中找到成功的認證。 ChainedTokenCredential 可讓您的程式碼在驗證方法之間順暢切換,先嘗試 ManagedIdentityCredential (針對 Azure App Service 等生產環境),然後回復至 AzureCliCredential (針對本機開發),並顯示哪個認證成功。

先決條件

使用環境變數啟用記錄

使用環境變數啟動應用程式,以啟用記錄的簡單方法。

AZURE_LOG_LEVEL=verbose node index.js

設定環境變數

您也可以將環境變數 .env 新增至專案根目錄中的檔案。 建立名為的檔案 .env ,並新增下列內容。

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>

在原始程式碼中使用記錄器套件啟用記錄

下列程式碼範例會使用 @azure/logger 套件來偵錯 Azure SDK 用戶端程式庫。

設定特定服務的記錄

除了設定全域記錄層級之外,您也可以直接在程式碼中為特定 Azure 服務設定不同的記錄層級:

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

此方法可讓您在相同的應用程式中使用多個 Azure 服務時,精細控制記錄詳細程度。

  1. 使用下列程式碼建立 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. 建立專案並安裝 npm 相依性。

    npm init -y
    npm pkg set type=module
    npm install @azure/identity @azure/storage-blob @types/node @azure/logger
    
  3. 使用 Azure CLI 登入本機環境中的 Azure 訂用帳戶。

    az login
    
  4. 建置應用程式。

    tsc
    
  5. 使用環境變數檔案執行應用程式。 此 --env-file 選項是在 Node.js 20.6.0 中引進的。

    node --env-file .env index.js
    
  6. 在輸出中尋找成功的認證 - 可讓您 ChainedTokenCredential 的程式碼在驗證方法之間順暢切換,先嘗試 ManagedIdentityCredential (適用於 Azure App Service 等生產環境),然後回復至 AzureCliCredential (針對本機開發),記錄會顯示哪個認證成功。

其他資源