Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как настроить ведение журнала в библиотеках пакета SDK Azure для JavaScript. Включение ведения журнала помогает диагностировать проблемы с проверкой подлинности, устранять неполадки с цепочками учетных данных и получать видимость операций пакета SDK.
Чтобы включить ведение журнала, можно использовать любой из следующих вариантов:
-
AZURE_LOG_LEVEL=verboseЗадайте переменную среды для включения ведения журнала. - Используйте
@azure/loggerпакет в исходном коде.
Допустимые уровни журнала включают verbose, info, warning и error.
Замечание
Код службы хранилища Azure, показанный в этой статье, предполагает, что ресурс хранилища настроен с соответствующими ролями Microsoft Entra. Дополнительные сведения: авторизация доступа к blob-объектам с помощью идентификатора Microsoft Entra.
Предпосылки
- Подписка 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>
Включить журналирование с помощью пакета logger в исходном коде
В следующем примере кода пакет @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 в локальной среде с помощью Azure CLI.
az loginЗапустите приложение с файлом переменной среды. Этот
--env-fileпараметр был представлен в Node.js 20.6.0.node --env-file .env index.jsНайдите в выводе учетные данные, использованные для успешной аутентификации.
ChainedTokenCredentialпозволяет коду легко переключаться между методами проверки подлинности, сначала пытатьсяManagedIdentityCredential(для рабочих сред, таких как Служба приложений Azure), а затем вернуться к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>
Включить ведение журнала с помощью пакета logger в исходном коде
В следующем примере кода используется пакет @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 в локальной среде с помощью Azure CLI.
az loginСоздайте приложение.
tscЗапустите приложение с файлом переменной среды. Этот
--env-fileпараметр был представлен в Node.js 20.6.0.node --env-file .env index.jsНайдите в выводе учетные данные, которые были успешно использованы:
ChainedTokenCredentialпозволяет вашему коду плавно переключаться между методами проверки подлинности, сначала пытаясь использоватьManagedIdentityCredential(для промышленных сред, таких как Служба приложений Azure), а затем переключаясь наAzureCliCredential(для локальной разработки), при этом журналы показывают, какие учетные данные были успешно использованы.