c# - Serilog LoggerConfiguration通过上下文写入不同的Sink

标签 c# asp.net .net logging serilog

我有使用 IdentityServer3 的 Web asp.net MVC 应用程序。 我想将日志记录分割到不同的接收器。 我想将 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();

最佳答案

要将事件子集写入接收器,请使用 WriteTo.Logger()Filter 指令。每个案例都会相似;这是身份服务器:

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

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

关于c# - Serilog LoggerConfiguration通过上下文写入不同的Sink,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41004325/

相关文章:

c# - 当我只知道集合的类型时,如何在 T 的 c# 通用集合中找到 T 的类型?

c# - 根级别的数据无效

c# - 我们应该在初始化时将变量设置为 null、false 并创建新对象吗?

c# - gridview 中的删除命令问题 - 必须声明标量

asp.net - 带有 SSL 和 Asp.NET Core API 的 Nginx 反向代理

asp.net - 在 ASP.NET 中检测来自移动浏览器的请求

c# - 具有 2 个类型参数的显式泛型方法实现——仅显式命名 1 个类型参数

c# - 平滑手绘曲线

c# - Task.Run 中的默认 TaskCreationOptions

asp.net - asp.net网站如何托管mysql数据库