Logging

IdentityServerは、ASP.NET Coreが提供する標準のログ機能を使用します。Microsoftのドキュメントには、優れたイントロと組み込みのロギングプロバイダの説明があります。

ログレベルの使用に関するMicrosoftのガイドラインにほぼ従います。

  • Trace 開発者だけが問題をトラブルシューティングするための貴重な情報です。これらのメッセージには、トークンなどの機密性の高いアプリケーションデータが含まれている可能性があり、運用環境で有効にするべきではありません。
  • Debug内部の流れに従い、何らかの決定がなされた理由を理解するため。開発およびデバッグ中に短期間の有用性があります。
  • Informationアプリケーションの一般的な流れを追跡するため。これらのログには通常、長期的な価値があります。
  • Warningアプリケーションフローの異常または予期しないイベントの場合。これらには、アプリケーションの停止を引き起こさないエラーやその他の条件が含まれる場合がありますが、調査が必要な場合があります。
  • Error処理できないエラーや例外について 例:プロトコル要求の検証に失敗しました。
  • Critical直ちに注意が必要な障害の場合。例:不足しているストア実装、無効なキーマテリアル...

Serilogのセットアップ

私たちは個人的にはSerilogが大好きです。試してみる。

ASP.NET Core 2.0+

次の設定では、Serilog.AspNetCoreとSerilog.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();
    }
}

ASP.NET Core 1.0, 1.1

次の設定では、Serilog.Extensions.Logging``と ``Serilog.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();
    }
}