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的日志记录:操作说明。