强制日志记录是否可用于Microsoft.Extensions.Logging

时间:2018-05-16 19:46:52

标签: asp.net-core serilog coreclr .net-core-logging asp.net-core-logging

我有ASP.NET Core应用程序。我正在使用Microsoft.Extensions.Logging.ILoggerSerilog日志记录提供程序的接口 在生产环境中,日志级别设置为Error。因此,Error loglevel以下的任何内容都不会被记录。

Force中是否有Microsoft.Extensions.Logging日志记录,无论日志级别设置如何,都会记录消息?

基本上我想(暂时)记录一些信息而不将LogLevel设置为Information,因为这会记录所有其他不相关的信息消息。

更新1
所以我根据建议更新了我的appsettings.json但是没有用。请注意,serilog也有自己的loglevel,我已经注释掉了。但仍然没有工作。

"Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Error",
      "MyUserService": "Information"
    }   
 },   
 "Serilog": {
    "Using": [ "Serilog.Sinks.MSSqlServer" ],
    //"MinimumLevel": "Error",
    "WriteTo": [
      {
        "Name": "MSSqlServer",
        "Args": {
          //"restrictedToMinimumLevel": "Error",
          "connectionString": "Data Source=.\\SQLExpress;Initial Catalog=MyDataBase;Integrated Security=True;MultipleActiveResultSets=True",
          "tableName": "Logs"
        }
      }
    ],
    "Properties": {
      "Application": "MyApplication"
    }   
}

然后在MyUserService

public class MyUserService : BaseService, IMyUserService
{

    private readonly ILogger<MyUserService> _logger;

    public MyUserService(MyDBContext dbContext, ILogger<MyUserService> logger)
        : base(dbContext)
    {            
        _logger = logger;
    }

    public async Task DoSomethig()
    {       
       _logger.LogInformation("Log something meaningful here");
    }       
 }

和program.cs

     public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .UseApplicationInsights()
        .UseUrls("http://*:40006")
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            //removed for brevity
        })
        .ConfigureLogging((hostingContext, logging) =>
        {         
            Log.Logger = new LoggerConfiguration()
            .ReadFrom.Configuration(hostingContext.Configuration)
            .CreateLogger();

            logging.AddSerilog();         
        })
        .Build();

1 个答案:

答案 0 :(得分:2)

我们的想法是按日志cagtegory配置日志级别。

一旦你自己注入ILogger<MyCategory>(其中MyCategory可以是任何类型 - 一种特殊类型只是为了表示日志类别或只是你记录的类),你可以独立配置日志级别其他一切:

"Logging": {
  "LogLevel": {
    "Default": "Error",
    "MyCategory": "Information"
  }
}