首页 文章

如何过滤aspnet核心日志?

提问于
浏览
1

以下样板文件,Microsoft提供的ASP.NET Core 2.1的C#代码应该可以防止仅写入信息日志 . 但事实并非如此 .

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            var env = hostingContext.HostingEnvironment;
            config.AddEnvironmentVariables();
        })
        .ConfigureLogging((hostingContext, logging) =>
        {
            logging.AddConsole();
            logging.AddDebug();
            logging.AddEventSourceLogger();
        })
        .ConfigureLogging(logging => logging.SetMinimumLevel(LogLevel.Warning))
        .UseStartup<Startup>();

我仍然看到如下消息:

MyApp> info:Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker [2]

Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker:信息:11.2286ms中执行的操作/索引

我故意删除(现在)代码来调用AppSettings.json . 为什么我仍然看到信息严重性日志项?

1 回答

  • 1

    在您的代码中尝试以下更改,将第一个AddFilter的类别设置为null

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((hostingContext, config) =>
                {
                    var env = hostingContext.HostingEnvironment;
                    config.AddEnvironmentVariables();
                })
                .ConfigureLogging((hostingContext, logging) =>
                {
                    logging.AddConsole();
                    logging.AddFilter(null, LogLevel.Warning);
    
                })
                .UseStartup<Startup>()
                .ConfigureLogging(logging => logging.AddFilter("Microsoft", LogLevel.Warning));
    

    添加logWarning以在Home / Index中进行测试

    private readonly ILogger _logger;
        public IndexModel(ILogger<IndexModel> logger)
        {
            _logger = logger;
        }
        public void OnGet()
        {
            _logger.LogInformation("Log Information");
            _logger.LogWarning("Log Warning");
        }
    

    结果截图

相关问题