Thinktecture IdentityServer v3 でログを有効にするにはどうすればよいですか?
現在、「予期しないエラーが発生しました」という一般的なエラー ページが表示されます。
私が求めている詳細をログに記録するErrorPageFilterAttribute
ための実装を解決しているように見えるによって一般的なエラーが返されることがわかりました。ILog
ILog
何らかの形で構成する必要があるのは、具体的な実装であると思われます。
Thinktecture IdentityServer v3 でログを有効にするにはどうすればよいですか?
現在、「予期しないエラーが発生しました」という一般的なエラー ページが表示されます。
私が求めている詳細をログに記録するErrorPageFilterAttribute
ための実装を解決しているように見えるによって一般的なエラーが返されることがわかりました。ILog
ILog
何らかの形で構成する必要があるのは、具体的な実装であると思われます。
私は専門家ではありませんが、IdentityServer についてある程度知っているので、お役に立てるかもしれません。IdentityServer v3 は、NLog、Log4Net、Serilog などのいくつかのログ プロバイダーをサポートしています。使用するものを選択して構成する必要があります。
その方法のサンプルを確認するには、次のプロジェクトIdentityServer3.Samplesとサンプルを github からダウンロードすることをお勧めします。そこには、とりわけ、NLog を使用する WebHost (最小)プロジェクトがあります。WebHost (最小)は、IIS を使用した IdentityServer v3 の基本 (最小) 構成を示す例です。
別のプロジェクトSelfHost (Minimal with Serilog)は、IdentityServer がコンソール アプリケーション (IIS なし) によってホストされている場合のシナリオで、ログに Serilog を使用する方法を示しています。
編集:
名前Thinktecture.IdentityServer.Core.Logging
空間には のいくつかの実装がありILogProvider
ます。ここにそれらのいくつかがあります。
Log4NetLogProvider
、これはlog4netを使用します。
NLogLogProvider
、それはNLogを使用します。
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 の使用方法を示しています。
ここで最後のリリースのドキュメントに従ってLog.Logger
、Startup.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();
その他のオプションについては、上記のドキュメント リンクを参照してください。
または単にドキュメントを読んでください:
https://identityserver.github.io/Documentation/docsv2/configuration/logging.html
何らかの理由で新しいログ ファイルに書き込まない log4net の問題があります。私のstartup.csには文字通りこれが含まれています:
Log.Debug("starting log. do not remove this line.");
LogProvider.GetLogger(typeof(Startup)).Log(LogLevel.Debug, () => "starting up");
理由はわかりませんが、これが機能する前に髪の毛をたくさん引き裂いたことを知っています.