ASP .Net Core日志记录 - 如何过滤日志记录器提供程序?

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

4
是的,您可以使用过滤器选择性地记录到控制台和调试中。AddConsole和AddDebug方法有一个重载,可以让您指定筛选日志提供程序的条件。
public void Configure(IApplicationBuilder app,
    IHostingEnvironment env,
    ILoggerFactory loggerFactory)
{
    loggerFactory
        .AddConsole(LogLevel.Warning)
        .AddDebug((category, logLevel) => (category.Contains("TodoApi") && logLevel >= LogLevel.Trace));

更多信息请参阅微软文档:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging#log-filtering

在我看来,这并不是对问题的回答,因为它只提供了“它允许您仅按日志级别或类别进行过滤”的信息,这也已经在答案中提供了。不幸的是,.NET Core日志记录不允许对所有条目进行更高级的过滤(您可以在ConfigureLogging中使用AddFilter,但它仅适用于未配置的条目)。 - Andrzej Martyna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接