本文說明如何在適用於 JavaScript 的 Azure SDK 程式庫中設定記錄。 啟用記錄可協助您診斷驗證問題、疑難排解認證鏈結,以及瞭解 SDK 作業。
若要啟用記錄,您可以使用下列任一選項:
- 設定
AZURE_LOG_LEVEL=verbose環境變數以開啟記錄。 - 在原始程式碼中使用套件
@azure/logger。
有效的日誌層次包括 verbose、 、 infowarning和 error。
備註
本文中顯示的 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 服務時,精細控制記錄詳細程度。
使用下列程式碼建立
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); });建立專案並安裝 npm 相依性。
npm init -y npm pkg set type=module npm install @azure/identity @azure/storage-blob @azure/logger使用 Azure CLI 登入本機環境中的 Azure 訂用帳戶。
az login使用環境變數檔案執行應用程式。 此
--env-file選項是在 Node.js 20.6.0 中引進的。node --env-file .env index.js在輸出中找到成功的認證。
ChainedTokenCredential可讓您的程式碼在驗證方法之間順暢切換,先嘗試ManagedIdentityCredential(針對 Azure App Service 等生產環境),然後回復至AzureCliCredential(針對本機開發),並顯示哪個認證成功。
先決條件
- Azure 訂用帳戶:免費建立訂用帳戶
- Node.js LTS
- TypeScript
- 選擇性驗證工具,例如 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 服務時,精細控制記錄詳細程度。
使用下列程式碼建立
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); });建立專案並安裝 npm 相依性。
npm init -y npm pkg set type=module npm install @azure/identity @azure/storage-blob @types/node @azure/logger使用 Azure CLI 登入本機環境中的 Azure 訂用帳戶。
az login建置應用程式。
tsc使用環境變數檔案執行應用程式。 此
--env-file選項是在 Node.js 20.6.0 中引進的。node --env-file .env index.js在輸出中尋找成功的認證 - 可讓您
ChainedTokenCredential的程式碼在驗證方法之間順暢切換,先嘗試ManagedIdentityCredential(適用於 Azure App Service 等生產環境),然後回復至AzureCliCredential(針對本機開發),記錄會顯示哪個認證成功。