在 IdentityServer3 中禁用信息日志记录

Disable informational logging in IdentityServer3

我正在使用 IdentityServer3(内部版本 2.3.0.0)和企业库进行日志记录。 目前,我将日志选项设置如下

 var options = new IdentityServerOptions
    {
      LoggingOptions = new LoggingOptions()
      {
         EnableHttpLogging = false,
         EnableKatanaLogging = false,
         EnableWebApiDiagnostics = false,
         WebApiDiagnosticsIsVerbose = false
       },
       EventsOptions = new EventsOptions()
       {
         RaiseErrorEvents = true,
         RaiseFailureEvents = true,
         RaiseInformationEvents = false,
         RaiseSuccessEvents = false
       }
    }

以上配置不会禁用以下条目的日志记录

Returning token response.
End token request
Creating JWT access token
Setting a sliding lifetime: 29100
Creating refresh token
Creating access token
Processing token request
Creating token response 
Start password token request validation
Start token request validation
Client validation success
Secret validator success: HashedSharedSecretValidator
Secret id found: JSApp
Parser found secret: PostBodySecretParser
Start parsing for secret in post body
X.509 certificate not found.
Start parsing for X.509 certificate
Start client validation
Start token request
CorsPolicyService allowed origin

如何禁用上述日志记录并仅允许错误日志条目?

这只是将您的日志记录框架配置为不显示 INFO 日志记录的问题。而是仅记录 ERROR 和 FATAL。

如果您想完全禁用日志记录,您可以像这样为 LibLog 配置 NoopLogger:

LogProvider.SetCurrent(new NoopLogProvider());

https://github.com/IdentityServer/IdentityServer3/blob/master/source/Core/Logging/NoopLogProvider.cs

我已经弄清楚如何配置 EntLib 配置以避免信息日志记录。

如果 CategoryFilter 用作 logFilter,那么您可以通过将 switchValue 设置为 Warning(或您需要的任何其他值)来禁用信息记录。

<add switchValue="Warning" name="Information">
        <listeners>
          <add name="Database Trace Listener" />
        </listeners>
</add>

如果PriorityFilter被用作logFilter,那么需要注意的一件事是LibLog没有为LogEntry设置优先级参数。

因此,EntLib 默认 priority 为“-1”。
但是,EntLib 不会过滤带有 priority 和 -1 的 LogEntries(即使 minimumPriority 设置为“-1”)。 https://msdn.microsoft.com/en-us/library/dn440731(v=pandp.60).aspx

因此,在这种情况下,logEntires 在特殊类别源中结束

<specialSources>
    <allEvents switchValue="All" name="All Events" />
    <notProcessed switchValue="Warning" name="Unprocessed Category">
        <listeners>
             <add name="Database Trace Listener" />
        </listeners>
    </notProcessed>
    <errors switchValue="All" name="Logging Errors & Warnings"/>
</specialSources>

在这里,将 notProcessed 类别的 switchValue 设置为 Warning 以避免信息记录。