MSAL for Python 中的日志记录

Microsoft 身份验证库(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 甚至连用于启用 PII 日志记录的开关都没有。 应用开发人员仍可以使用标准Python日志记录来记录任何内容。 通过这样做,应用负责安全处理高度敏感的数据,并遵循法规要求。

日志记录级别

MSAL 提供了多个级别的日志记录详细信息:

  • LogAlways:此日志级别上没有执行级别筛选。 将记录所有级别的日志消息。
  • Critical:描述无法恢复的应用程序或系统崩溃的日志,或需要立即注意的灾难性故障。
  • Error:表示出现了问题,并生成了一个错误。 用于调试和识别问题。
  • Warning:不一定是错误或失败,而是用于诊断和查明问题。
  • Informational:MSAL 将记录用于信息性目的的事件,不一定用于调试。
  • Verbose (默认值):MSAL 记录库行为的完整详细信息。

注释

并非所有日志级别都可用于所有 MSAL 库。

个人和组织数据

默认情况下,MSAL 记录器不会捕获任何高度敏感的个人或组织数据。 如果决定这样做,该库提供了启用记录个人和组织数据的选项。

以下部分提供有关应用程序的 MSAL 错误日志记录的更多详细信息。

适用于 Python 的 MSAL 日志记录

MSAL for Python 中的日志记录利用 python 标准库中的日志记录模块。 可以按如下所示配置 MSAL 日志记录(并在 username_password_sample中查看其操作):

为所有模块启用调试日志记录

默认情况下,任何Python脚本中的日志记录都处于关闭状态。 如果要为脚本中的所有 Python 模块启用详细日志记录,请使用 logging.basicConfig,并将级别设置为 logging.DEBUG

import logging

logging.basicConfig(level=logging.DEBUG)

这会将提供给日志记录模块的所有日志消息输出到标准输出。

配置 MSAL 日志记录级别

可以使用 logging.getLogger() 方法,通过记录器名称 "msal" 配置 MSAL for Python 日志提供程序的日志记录级别:

import logging

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

使用 Azure 应用 Insights 配置 MSAL 日志记录

Python 日志会交给日志处理程序,而该处理程序默认是 StreamHandler。 要使用检测密钥将 MSAL 日志发送到 Application Insights,请使用 opencensus-ext-azure 库提供的 AzureLogHandler

若要安装,opencensus-ext-azure请将 PyPI 上的 opencensus-ext-azure 包添加到依赖项中,或使用 pip install 安装:

pip install opencensus-ext-azure

然后使用 APP_INSIGHTS_KEY 环境变量中设置的检测密钥将 "msal" 日志提供程序的默认处理程序更改为 AzureLogHandler 的实例:

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 中的个人数据和组织数据

用于Python的 MSAL 不会记录个人数据或组织数据。 没有用于打开或关闭个人或组织数据日志记录的属性。

可以使用标准Python日志记录来记录所需的任何内容,但你负责安全地处理敏感数据,并遵循法规要求。

有关Python中日志记录的详细信息,请参阅Python的日志记录:操作说明