【问题标题】:ASP .Net core Logging - How to filter logger providers?ASP .Net 核心日志记录 - 如何过滤记录器提供程序?
【发布时间】:2017-07-09 05:40:07
【问题描述】:

我的 asp.net 核心项目中有 2 个记录器提供程序: 1. 控制台提供商。 2. 数据库提供者(自定义提供者)。 我不想每次都记录到所有提供程序,但是,有时会写入控制台提供程序,有时会写入数据库提供程序。 我看到了过滤器提供程序选项,但它只允许您按日志级别或类别进行过滤。 ASP .net 核心日志库是否可以选择仅写入一个提供程序? 还是我必须自己编写日志服务而不使用 ASP .net 核心日志库?

【问题讨论】:

    标签: c# logging asp.net-core


    【解决方案1】:

    是的,您可以使用过滤来选择性地登录到控制台和调试。 AddConsole 和 AddDebug 方法有一个重载,可让您指定过滤到该日志记录提供程序的条件。

    public void Configure(IApplicationBuilder app,
        IHostingEnvironment env,
        ILoggerFactory loggerFactory)
    {
        loggerFactory
            .AddConsole(LogLevel.Warning)
            .AddDebug((category, logLevel) => (category.Contains("TodoApi") && logLevel >= LogLevel.Trace));
    

    有关详细信息,请参阅 Microsoft 的文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging#log-filtering

    【讨论】:

    • 恕我直言,这不是对“它允许您仅按日志级别或类别进行过滤”的问题的答案,答案中也提供了这一点。不幸的是,.NET Core 日志记录不允许对所有条目进行更高级的过滤(您可以在 ConfigureLogging 中使用 AddFilter,但它仅适用于未配置的条目)。
    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 2012-03-08
    • 2018-12-20
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    相关资源
    最近更新 更多