Ведение журнала в MSAL для Python

Приложения Microsoft Authentication Library (MSAL) создают сообщения журнала, которые помогают диагностировать проблемы. Приложение может настроить ведение журнала с несколькими строками кода и иметь пользовательский контроль над уровнем детализации и независимо от того, регистрируются ли персональные и организационные данные. Рекомендуется создать реализацию ведения журнала MSAL и предоставить пользователям способ отправки журналов при наличии проблем с проверкой подлинности.

Ведение журнала в MSAL Python предназначено для использования стандартных механизмов ведения журнала Python, поэтому все предыдущие знания о журнале Python применяются к MSAL Python.

  • По умолчанию ведение журнала в любом скрипте Python отключено. Если вы хотите включить отладочное журналирование для всех модулей во всём скрипте Python, используйте logging.basicConfig(level=logging.DEBUG).
  • Большинство журналов MSAL Python уже находятся на уровне отладки, который будет отключен по умолчанию. Но если вы хотите включить ведение журнала отладки для отладки других модулей в скрипте Python, поэтому вы хотите замолчать MSAL, вы просто отключите средство ведения журнала, используемое MSAL Python: logging.getLogger("msal").setLevel(logging.WARN)
  • MSAL Python не регистрирует персональные данные (PII). То есть в MSAL Python нет даже переключателя для включения журналирования персональных данных. Разработчики приложений по-прежнему могут использовать стандартные средства журналирования Python, чтобы записывать в журнал любое содержимое. Таким образом, приложение несет ответственность за безопасную обработку конфиденциальных данных и соблюдение нормативных требований.

Уровни ведения журнала

MSAL предоставляет несколько уровней детализации журналирования:

  • LogAlways: Для этого уровня журнала фильтрация не выполняется. Будут регистрироваться сообщения всех уровней.
  • Critical: журналы, описывающие неустранимый сбой приложения или системы, или катастрофический сбой, требующий немедленного внимания.
  • Error: указывает, что что-то пошло не так, и возникла ошибка. Используется для отладки и выявления проблем.
  • Warning: не обязательно произошла ошибка или сбой, но предназначены для диагностики и выявления проблем.
  • Informational: MSAL регистрирует события, предназначенные для информационных целей, не обязательно предназначенных для отладки.
  • Verbose (по умолчанию): MSAL регистрирует полные сведения о поведении библиотеки.

Note

Для всех библиотек MSAL доступны не все уровни журналов.

Персональные и организационные данные

По умолчанию средство ведения журнала MSAL не записывает конфиденциальные персональные или организационные данные. Библиотека предоставляет возможность включить ведение журнала персональных и организационных данных, если вы решите это сделать.

В следующих разделах приведены дополнительные сведения о ведении журнала ошибок MSAL для приложения.

MSAL для журналирования в Python

Ведение журнала в MSAL для Python использует модуль ведения журнала в стандартной библиотеке Python. Вы можете настроить ведение журнала MSAL следующим образом (и просмотреть его в действии в username_password_sample):

Включение ведения журнала отладки для всех модулей

По умолчанию ведение журнала в любом скрипте Python отключено. Если вы хотите включить подробное журналирование для всех модулей Python в вашем скрипте, используйте logging.basicConfig с уровнем logging.DEBUG:

import logging

logging.basicConfig(level=logging.DEBUG)

Это выведет в стандартный вывод все сообщения журнала, переданные модулю журналирования.

Настройка уровня ведения журнала MSAL

Вы можете настроить уровень журналирования для средства ведения журнала MSAL for Python с именем "msal" с помощью метода logging.getLogger():

import logging

logging.getLogger("msal").setLevel(logging.WARN)

Настройка ведения журнала MSAL с помощью приложение Azure Insights

Сообщения журналов Python передаются обработчику журналирования, которым по умолчанию является StreamHandler. Чтобы отправить журналы MSAL в Application Insights с использованием ключа инструментирования, используйте AzureLogHandler, предоставляемый библиотекой opencensus-ext-azure.

Чтобы установить, добавьте пакет opencensus-ext-azure из PyPI в список зависимостей или используйте pip install:

pip install opencensus-ext-azure

Затем измените обработчик по умолчанию для поставщика журналов "msal" на экземпляр AzureLogHandler, для которого ключ инструментирования задан в переменной среды APP_INSIGHTS_KEY:

import logging
import os

from opencensus.ext.azure.log_exporter import AzureLogHandler

APP_INSIGHTS_KEY = os.getenv('APP_INSIGHTS_KEY')

logging.getLogger("msal").addHandler(AzureLogHandler(connection_string='InstrumentationKey={0}'.format(APP_INSIGHTS_KEY)))

Персональные и организационные данные в Python

MSAL для Python не регистрирует персональные данные или данные организации. Нет свойства для включения или отключения ведения журнала персональных данных или данных организации.

Вы можете использовать стандартный модуль logging в Python для журналирования всего, что вам нужно, но вы несете ответственность за безопасную обработку конфиденциальных данных и соблюдение нормативных требований.

Дополнительную информацию о журналировании в Python см. в руководстве Python «Журналирование: руководство».