如何在 AspNetCore 2.2 NLog 中关闭 Microsoft 日志

How to turn off Microsoft Logs in AspNetCore 2.2 NLog

以下是我的日志

[2019-05-07 15:55:38.4270][PC-20170829ROEW][Info] my logs recorded

[2019-05-07 15:55:38.4929][PC-20170829ROEW][Info] Route matched with {action = >"Get", controller = "Values"}. Executing action >QunarFlight.Web.Controllers.ValuesController.Get (QunarFlight.Web)

[2019-05-07 15:55:38.5798][PC-20170829ROEW][Info] Executing action method >QunarFlight.Web.Controllers.ValuesController.Get (QunarFlight.Web) - Validation >state: Valid

[2019-05-07 15:55:38.6066][PC-20170829ROEW][Info] Executed action method >QunarFlight.Web.Controllers.ValuesController.Get (QunarFlight.Web), returned >result Microsoft.AspNetCore.Mvc.ObjectResult in 22.6363ms.

[2019-05-07 15:55:38.6066][PC-20170829ROEW][Info] Executing ObjectResult, >writing value of type 'System.String[]'.

我想关闭所有微软默认日志(最后四条记录),只保留我已经记录的日志(第一条记录)。 我修改appsettings.json以下

"Logging": {
  "LogLevel": {
    "Default": "Information",
    "Microsoft.AspNetCore.Hosting": "Warning",
    "Microsoft.AspNetCore.Routing": "Warning",
    "Microsoft.AspNetCore.Mvc": "Warning"
 }

在这种情况下,我记录的日志将不会输出。如果我去掉"Microsoft.AspNetCore.Mvc": "Warning" 我记录的日志会输出。我应该如何修改它?

appsettings.json

"Logging": {
   "LogLevel": {
     "Default": "Information",
     "Microsoft.AspNetCore.Hosting": "Warning",
     "Microsoft.AspNetCore.Routing": "Warning",
     "Microsoft.AspNetCore.Mvc": "Warning"
}

配置在Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
ILoggerFactory loggerFactory)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        env.ConfigureNLog("NLog.config");
        loggerFactory.AddNLog();
        app.UseMiddleware<CustomMiddleware>();
        app.UseMvc();
    }

Program.cs

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args).ConfigureAppConfiguration((builderContext, config) =>
        {
            config.AddJsonFile("appsetting.json", optional: true, reloadOnChange: true)
             .AddJsonFile($"appsettings.{builderContext.HostingEnvironment.EnvironmentName}.json", true, true)
             ;
        })
            .UseStartup<Startup>();

如果您在 NLog.config 中的 file-Layout 中包含 ${logger},那么帮助您设置 logger-filter.

会容易得多

但我在 google 上发现了这个随机线索:

Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor:Information: Executing ObjectResult

所以我想您需要将 MEL-Config 更改为:

"Logging": {
  "LogLevel": {
    "Default": "Information",
    "Microsoft.AspNetCore.Hosting": "Warning",
    "Microsoft.AspNetCore.Infrastructure": "Warning",
    "Microsoft.AspNetCore.Routing": "Warning",
    "Microsoft.AspNetCore.Mvc": "Warning"
 }

甚至可以考虑这样做:

"Logging": {
  "LogLevel": {
    "Default": "Information",
    "Microsoft.AspNetCore": "Warning"
 }