Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этой статье объясняется, как настроить ведение журнала в библиотеках пакета SDK Azure для JavaScript. Включение ведения журнала помогает диагностировать проблемы с проверкой подлинности, устранять неполадки с цепочками учетных данных и получать видимость операций пакета SDK.
Чтобы включить ведение журнала, можно использовать любой из следующих вариантов:
-
AZURE_LOG_LEVEL=verboseЗадайте переменную среды для включения ведения журнала. - Используйте пакет в исходном коде
@azure/logger.
Допустимые уровни журнала: verbose, infowarningи 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>
Включение ведения журнала с помощью пакета средства ведения журнала в исходном коде
В следующем примере кода используется пакет @azure или средства ведения журнала для отладки клиентских библиотек пакета SDK Azure.
Настройка ведения журнала для определенных служб
Помимо настройки глобального уровня журнала, можно настроить различные уровни журналов для определенных служб 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>
Включение ведения журнала с помощью пакета средства ведения журнала в исходном коде
В следующем примере кода используется пакет @azure или средства ведения журнала для отладки клиентских библиотек пакета SDK Azure.
Настройка ведения журнала для определенных служб
Помимо настройки глобального уровня журнала, можно настроить различные уровни журналов для определенных служб 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(для локальной разработки) с журналами, показывающими, какие учетные данные выполнены успешно.