实现ILogger的BeginScope并在Log中获取Scope值
需求:实现ILogger接口的BeginScope方法,让Log函数能获取到BeginScope传入的值(如示例中的"app1")。现有MyLogger类框架及调用示例如下:
public sealed class MyLogger : ILogger
{
public IDisposable? BeginScope<TState>(TState state) where TState : notnull
{
// 需要实现这里的逻辑
}
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception? exception, Func<TState, Exception?, string> formatter)
{
// 要在这里拿到"app1"这类Scope值
}
}
调用示例:
using (logger.BeginScope("app1"))
logger.LogInformation("Hello");
实现思路
使用**AsyncLocal<Stack