C# Serilog LoggerConfiguration按上下文写入不同的接收器

C# Serilog LoggerConfiguration按上下文写入不同的接收器,c#,asp.net,.net,logging,serilog,C#,Asp.net,.net,Logging,Serilog,我有一个使用IdentityServer3的web asp.net MVC应用程序。 我想将日志拆分到不同的接收器。 我想将IdentityServer3日志写入Trace,EventLog(“IdentityServer3”)和SerilogWeb.Classic.Enrichers数据库MSSqlServer 我的配置是: Log.Logger = new LoggerConfiguration() .WriteTo.Trace()

我有一个使用
IdentityServer3
的web asp.net MVC应用程序。 我想将日志拆分到不同的接收器。 我想将
IdentityServer3
日志写入
Trace
EventLog(“IdentityServer3”)
SerilogWeb.Classic.Enrichers
数据库
MSSqlServer

我的配置是:

Log.Logger = new LoggerConfiguration()
                .WriteTo.Trace()
                .WriteTo.EventLog("IdentityServer3")
                .Enrich.FromLogContext()
                //all after this i want to write in database
                .WriteTo.MSSqlServer("connectionString", "Log")
                .Enrich.With(new HttpRequestIdEnricher())
                .Enrich.With(new HttpRequestRawUrlEnricher())
                .Enrich.With(new HttpRequestUserAgentEnricher())
                .Enrich.With(new UserNameEnricher())
                .CreateLogger();

要将事件子集写入接收器,请使用
WriteTo.Logger()
Filter
指令。每种情况都是相似的;以下是Identity Server one:

Log.Logger = new LoggerConfiguration()
    .WriteTo.Logger(lc => lc
        .Filter.ByIncludingOnly(Matching.FromSource("IdentityServer3"))
        .WriteTo.Trace()
        .WriteTo.EventLog("IdentityServer3"))
    // <snip>
Log.Logger=new LoggerConfiguration()
.WriteTo.Logger(lc=>lc
.Filter.ByIncludingOnly(匹配.FromSource(“IdentityServer3”))
.WriteTo.Trace()
.WriteTo.EventLog(“IdentityServer3”))
// 
您可以在最外层应用充实器,以便充实所有事件,也可以在其中一个嵌套记录器配置上应用充实器