1

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

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

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

更新 1
所以我根据建议更新了我的 appsettings.json,但是没有用。请注意,serilog 也有自己的日志级别,我已将其注释掉。但仍然无法正常工作。

"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();
4

1 回答 1

2

这个想法是为每个日志类别配置日志级别。

一旦你让自己注入一个ILogger<MyCategory>(其中MyCategory可以是任何类型 - 一种特殊类型,仅用于指示日志类别或只是您登录的类),您可以配置独立于其他所有内容的日志级别:

"Logging": {
  "LogLevel": {
    "Default": "Error",
    "MyCategory": "Information"
  }
}
于 2018-05-17T21:32:55.987 回答