在 MSAL.NET 中进行日志记录

Microsoft 身份验证库 (MSAL) 应用生成日志消息,这些消息可以用来诊断问题。 应用可以通过数行代码配置日志记录,并可对详细程度以及是否记录个人和组织数据进行自定义控制。 建议创建 MSAL 日志记录回调,并提供一种方式来让用户在遇到身份验证问题时提交日志。

日志记录级别

MSAL 提供多个日志记录详细级别:

  • 错误:指示出现问题并已生成错误。 用于调试并确定问题。
  • 警告:不一定会出现错误或故障,只是为了诊断和指出问题。
  • 信息:MSAL 将要记录的事件可为用户提供信息,不一定用于调试。
  • 详细:默认。 MSAL 将记录库行为的完整详细信息。

个人和组织数据

默认情况下,MSAL 记录器不捕获任何高度敏感的个人或组织数据。 该库提供相关选项,允许你自行决定是否记录个人和组织数据。

以下各节将详细介绍应用程序的 MSAL 错误日志记录。

在 MSAL.NET 中配置日志记录

在 MSAL 3.x 中,日志记录是在创建应用时使用 .WithLogging 生成器修饰符按应用程序设置的。 该方法采用以下可选参数:

  • Level 用于确定你需要哪种级别的日志记录。 将其设置为“Errors”时,就只会获得错误
  • PiiLoggingEnabled 在设置为 true 的情况下可以记录个人和组织数据。 默认情况下,此项设置为 false,不允许应用程序记录个人数据。
  • LogCallback 设置为一个执行日志记录的委托。 如果 PiiLoggingEnabled 为 true,则此方法会接收消息两次:第一次时 containsPii 参数为 false,消息没有个人数据;第二次时 containsPii 参数为 true,消息可能包含个人数据。 在某些情况下(消息不含个人数据),消息是相同的。
  • DefaultLoggingEnabled 为平台启用默认日志记录。 默认为 false。 如果将它设置为 true,它会在桌面/UWP 应用程序中使用事件跟踪,在 iOS 上使用 NSLog,在 Android 上使用 logcat。
class Program
{
  private static void Log(LogLevel level, string message, bool containsPii)
  {
     if (containsPii)
     {
        Console.ForegroundColor = ConsoleColor.Red;
     }
     Console.WriteLine($"{level} {message}");
     Console.ResetColor();
  }

  static void Main(string[] args)
  {
    var scopes = new string[] { "https://microsoftgraph.chinacloudapi.cn/user.read" };

    var application = PublicClientApplicationBuilder.Create("<clientID>")
                      .WithLogging(Log, LogLevel.Info, true)
                      .Build();

    AuthenticationResult result = application.AcquireTokenInteractive(scopes)
                                             .ExecuteAsync().Result;
  }
}

提示

有关 MSAL.NET 日志记录的示例和其他信息,请参阅 MSAL.NET Wiki

后续步骤

有关更多代码示例,请参阅 Microsoft 标识平台代码示例