ASP.Net Core LogLevel无法正常工作

时间:2017-12-03 19:47:15

标签: c# logging asp.net-core

我无法让记录器像我想要的那样工作。我已将loglevel设置为警告,但控制台窗口仍然显示为信息日志。

我在下面提供了一些示例,Startup.cs或Program.cs中没有配置任何额外的内容。

如果需要,我很乐意提供更多信息。

appsettings.json

{
  "ConnectionStrings": {
    "DefaultConnection": "ConnectionString"
  },
  "Logging": {
    "IncludeScopes": false, 
    "LogLevel": {
      "Default": "Warning",
      "Microsoft": "Warning"
    }
  }
}

记录示例:

public class DishRepository : IDishRepository
{
    private readonly ApplicationDbContext _context;
    private readonly ILogger<DishRepository> _logger;

    public DishRepository(ApplicationDbContext context, ILogger<DishRepository> logger)
    {
        _context = context;
        _logger = logger;
    }

    public IEnumerable<Dish> GetAll()
    {
        try
        {
            _logger.LogInformation("GetAll was called");

            return _context.Dishes
                .Include(d => d.Category)
                .Include(d => d.DishIngredients)
                .ThenInclude(di => di.Ingredient)
                .Include(d => d.PizzaType).ToList();
        }
        catch (Exception e)
        {
            _logger.LogError($"Failed to get all dishes: {e}");
            return Enumerable.Empty<Dish>();
        }

    }
}

当我通过VisualStudio运行我的程序时,我得到了这个:

dotnet console

--------本作品--------

我在https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?tabs=aspnetcore2x找到了下面的示例,但是我不明白为什么会这样,而不是上面的appsettings.json示例。

appsettings.json

  "Logging": {
"IncludeScopes": false,
"Debug": {
  "LogLevel": {
    "Default": "Warning"
  }
},
"Console": {
  "LogLevel": {
    "PizzeriaAngular": "Warning",
    "Microsoft": "Warning",
    "Microsoft.AspNetCore": "Warning",
    "Microsoft.EntityFrameworkCore": "Information" 
  }
},
"LogLevel": {
  "Default": "Debug"
}

}

Program.cs仍然如下:

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
}

2 个答案:

答案 0 :(得分:5)

有两个配置文件appsettings.json和appsettings.Development.json。然后系统在开发模式下使用它。

答案 1 :(得分:2)

此代码适用于我( NetCore 2.x ) 在方法ConfigureServices(IServiceCollection services)中的类 Startup.cs

services.AddLogging(builder =>
        {
            builder.SetMinimumLevel(LogLevel.Trace);
            builder.AddFilter("Microsoft", LogLevel.Warning);
            builder.AddFilter("System", LogLevel.Error);``
            builder.AddFilter("Engine", LogLevel.Warning);
        });