Serilog LoggerConfiguration按上下文

时间:2016-12-06 20:32:21

标签: c# asp.net .net logging serilog

我使用IdentityServer3拥有web asp.net MVC应用程序。 我想将日志记录拆分为不同的Sink。 我想将IdentityServer3日志记录到TraceEventLog("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();

1 个答案:

答案 0 :(得分:3)

要将事件子集写入接收器,请使用WriteTo.Logger()Filter指令。每个案例都类似;这是Identity Server的一个:

Log.Logger = new LoggerConfiguration()
    .WriteTo.Logger(lc => lc
        .Filter.ByIncludingOnly(Matching.FromSource("IdentityServer3"))
        .WriteTo.Trace()
        .WriteTo.EventLog("IdentityServer3"))
    // <snip>

您可以在最外层应用限制器,以便它们丰富所有事件,或者在嵌套的记录器配置之一上。