IdentityServer使用ASP.NET Core提供的标准日志记录工具。Microsoft 文档有一个很好的介绍和内置日志记录提供程序的说明。

我们大致遵循Microsoft使用日志级别的指导原则:

  • Trace仅供开发人员解决问题的信息。这些消息可能包含敏感的应用程序数据(如令牌),不应在生产环境中启用。
  • Debug遵循内部流程并理解为何做出某些决定。在开发和调试过程中具有短期实用性。
  • Information用于跟踪应用程序的一般流程。这些日志通常具有一些长期价值。
  • Warning对于应用程序流中的异常或意外事件。这些可能包括错误或其他不会导致应用程序停止但可能需要调查的条件。
  • Error对于无法处理的错误和异常。示例:协议请求的验证失败。
  • Critical对于需要立即关注的故障。示例:缺少商店实施,无效的密钥材料......

Serilog的设置

我们个人非常喜欢Serilog试一试。

ASP.NET Core2.0+ 

对于以下配置,您需要Serilog.AspNetCoreSerilog.Sinks.Console包:

public class Program
{
    public static void Main(string[] args)
    {
        Console.Title = "IdentityServer4";

        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
            .MinimumLevel.Override("System", LogEventLevel.Warning)
            .MinimumLevel.Override("Microsoft.AspNetCore.Authentication", LogEventLevel.Information)
            .Enrich.FromLogContext()
            .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Literate)
            .CreateLogger();

        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args)
    {
        return WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseSerilog()
                .Build();
    }
}

.NET 

对于以下配置,您需要Serilog.Extensions.LoggingSerilog.Sinks.Console包:

public class Program
{
    public static void Main(string[] args)
    {
        Console.Title = "IdentityServer4";

        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
            .MinimumLevel.Override("System", LogEventLevel.Warning)
            .MinimumLevel.Override("Microsoft.AspNetCore.Authentication", LogEventLevel.Information)
            .Enrich.FromLogContext()
            .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message:lj}{NewLine}{Exception}{NewLine}", theme: AnsiConsoleTheme.Literate)
            .CreateLogger();

        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args)
    {
        return WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .ConfigureLogging(builder =>
                {
                    builder.ClearProviders();
                    builder.AddSerilog();
                })
                .Build();
    }
}