【问题标题】:Configuring Serilog Log.Logger at the API service level在 API 服务级别配置 Serilog Log.Logger
【发布时间】:2019-07-01 14:06:24
【问题描述】:

我有一个日志记录用例,我想在与使用 Serilog、Log.Logger 的所有其他 API 服务不同的级别记录特定的 API 调用。我当前的应用程序记录器配置类似于:

Log.Logger = new LoggerConfiguration()
                .MinimumLevel.ControlledBy(_loggingLevelSwitch)
                .WriteTo.MSSqlServer(connectionString, "LogTable")
                .CreateLogger();

所以,当我调用 SetLoggingLevelSwitch 来更新日志级别时,它会更新整个应用程序的级别,这是预期的。我想知道的是,在单个 API 调用中,我是否可以仅针对该 API 调用的范围覆盖日志级别,而不影响应用程序其余部分的日志级别?

谢谢!

【问题讨论】:

    标签: c# asp.net-web-api logging serilog


    【解决方案1】:

    我认为您可以使用任何 Container 来注册通用记录器,然后从中创建 ILogger

    services.AddScoped<LoggerConfiguration>((_) => {
    new LoggerConfiguration()
                    .MinimumLevel.Debug()
                    .WriteTo.Console();
    });
    
    

    创建记录器
    public YourApiController(LoggerConfiguration loggerOrdinaryConfig)
    {
        _strangeApiLogger = loggerOrdinaryConfig.
            MinimumLevel.Verbose()
            .CreateLogger();
    }
    

    但这可能会导致测试困难。

    这就是为什么你最好看看LogContext(按属性过滤)甚至FileConfiguration

    upd:总是尝试使用接口,因为单元测试更容易

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 2023-01-15
      • 2020-04-16
      • 2019-03-19
      相关资源
      最近更新 更多