如何在Thinktecture IdentityServer v3中启用日志记录?

Bis*_*its 10 thinktecture-ident-server identityserver3

如何在Thinktecture IdentityServer v3中启用日志记录?

我目前正在收到一个通用的错误页面,说"出现意外错误".

我能够弄清楚通常的错误会被返回,ErrorPageFilterAttribute这似乎解决了一些ILog记录我所追求的细节的实现.

我怀疑它是一些具体的实现ILog需要以某种方式配置.

Mic*_*ski 9

我不是专家,但我对IdentityServer有所了解,所以我可以提供帮助.IdentityServer v3支持一些日志记录提供程序,例如NLog,Log4Net或Serilog.您必须选择要使用的那个并进行配置.

要查看示例如何操作,我建议使用来自github的示例下载以下项目IdentityServer3.Samples.除此之外,您还可以找到使用NLog的WebHost(minimal)项目.WebHost(minimal)是一个示例,显示了带有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());
Run Code Online (Sandbox Code Playgroud)

确保继续执行配置当前日志提供程序使用的基础程序包或库所需的任何步骤.例如,以下配置可用于DiagnosticsTraceLogProvider:

<configuration>
  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add name="TextWriter"
             type="System.Diagnostics.TextWriterTraceListener"
             initializeData="Trace.log" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)

编辑2

自从我写了答案后,一些细节已经改变.现在IdentityServer使用LibLog库,您可以在那里找到ILogProvider的不同实现.

项目Custom Grants(更多自定义)显示了如何使用LibLog.


Nai*_*gel 6

继去年发布的文档,这里你可以设置Log.Logger你的Startup.cs.

例如,使用Serilog(通过搜索Serilog通过Nuget安装它),你可以通过ConfigurationStartup类的方法中添加这行代码来设置日志到文件

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();
Run Code Online (Sandbox Code Playgroud)

有关更多选项,请参阅上面的文档链接.

  • 很抱歉对此旧答案发表评论.为了使它在ASP.NET Core 2.0项目上工作,我做了以下1)将上面的代码添加到Startup类的构造函数中.2)在启动类的Configure方法中添加了附加参数`ILoggerFactory logFactory`.3)在Configure方法中添加了这行`logFactory.AddSerilog();` (2认同)

lea*_*ege 5

或者简单地阅读文档:

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

  • 当你告诉库的作者,“很好的发现”时,这有点好笑。:) (25认同)