我有一个日志记录用例,其中我想以与使用Serilog Log.Logger的所有其他API服务不同的级别记录特定的API调用。我当前对该应用程序的记录器配置如下:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.ControlledBy(_loggingLevelSwitch)
.WriteTo.MSSqlServer(connectionString, "LogTable")
.CreateLogger();
因此,当我调用SetLoggingLevelSwitch来更新日志级别时,它将更新整个应用程序的级别,这是预期的。我想知道的是,在单个API调用中,是否可以仅针对该API调用的范围覆盖日志级别,而不会影响应用程序其余部分的日志级别?
谢谢!
答案 0 :(得分:0)
我认为您可以使用任何容器注册通用记录器,然后从中创建ILogger
public YourApiController(LoggerConfiguration loggerOrdinaryConfig)
{
_strangeApiLogger = loggerOrdinaryConfig.
MinimumLevel.Verbose()
.CreateLogger();
}
使用创建记录器
{{1}}
但这可能会导致测试困难。
这就是为什么您最好查看docs(按属性过滤)甚至是LogContext
upd:出于易于单元测试的原因,始终尝试使用接口