web-dev-qa-db-ja.com

Thinktecture IdentityServer v3でログを有効にするにはどうすればよいですか?

Thinktecture IdentityServer v3でログを有効にするにはどうすればよいですか?

現在、「予期しないエラーが発生しました」という一般的なエラーページが表示されます。

私は、一般的なエラーがErrorPageFilterAttributeによって返されることを理解できました。これは、私が求めている詳細をログに記録するためのILogの実装を解決するようです。

なんらかの方法で構成する必要があるのは、ILogの具体的な実装だと思います。

10
Biscuits

または単にドキュメントを読んでください:

https://identityserver.github.io/Documentation/docsv2/configuration/logging.html

4
leastprivilege

私は専門家ではありませんが、IdentityServerについて何か知っているので、手助けできるかもしれません。 IdentityServer v3は、NLog、Log4Net、Serilogなどのいくつかのロギングプロバイダーをサポートしています。使用するものを選択して構成する必要があります。

サンプルを表示するには、次のプロジェクトをダウンロードすることをお勧めします IdentityServer3.Samples githubからのサンプルを使用します。とりわけ、NLogを使用する WebHost(minimal) プロジェクトがあります。 WebHost(最小)は、IISを使用したIdentityServer v3の基本的な(最小)構成を示す例です。

別のプロジェクト SelfHost(Serilogを使用する最小) は、IdentityServerがコンソールアプリケーション(IISなし)によってホストされている場合に、Serilogを使用してシナリオにログインする方法を示しています。

編集:

Thinktecture.IdentityServer.Core.Logging名前空間には、ILogProviderのいくつかの実装があります。ここにそれらのいくつかがあります。

Log4NetLogProviderlog4net を使用します。

NLogLogProviderNLog を使用します。

DiagnosticsTraceLogProvider、これはSystem.Diagnostics.Traceを使用します。

TraceSourceLogProvider、これはSystem.Diagnostics.TraceSourceを使用します。

最初に必要なパッケージをインストールするか、目的のログプロバイダーに必要なライブラリを参照することに加えて、このように、起動時に現在のログプロバイダーになるように設定する必要があります。

LogProvider.SetCurrentLogProvider(new DiagnosticsTraceLogProvider());

現在のログプロバイダーが使用する基になるパッケージまたはライブラリを構成するために必要な手順を引き続き実行してください。たとえば、次の構成をDiagnosticsTraceLogProviderで使用できます。

<configuration>
  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="TextWriter"
             type="System.Diagnostics.TextWriterTraceListener"
             initializeData="Trace.log" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

編集2

私が答えを書いたので、いくつかの詳細が変更されました。現在、IdentityServerはLibLogライブラリを使用しており、ILogProviderのさまざまな実装を見つけることができます。

プロジェクト Custom Grants(その他のカスタマイズ) は、LibLogの使用方法を示しています。

9

前回のリリースのドキュメントに従って [〜#〜] here [〜#〜]Log.LoggerStartup.csを設定するだけです。

たとえば、 Serilog (Serilogを検索してNuget経由でインストール)を使用すると、ConfigurationクラスのStartupメソッドにこのコード行を追加することで、ログをファイルに設定できます。

Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug() // change with your desired log level
            .WriteTo.File(@"C:\myPath.txt") // remember to assign proper writing privileges on the file
            .CreateLogger();

その他のオプションについては、上記のドキュメントリンクを参照してください。

6
Naigel

何らかの理由で新しいログファイルに書き込まないlog4netの落とし穴があります。私のstartup.csには文字通りこれが含まれています:

Log.Debug("starting log.  do not remove this line.");
LogProvider.GetLogger(typeof(Startup)).Log(LogLevel.Debug, () => "starting up");

理由はわかりません。これが機能する前に、髪の毛をたくさん引き裂いたことを知っています。

0
Code Silverback