访问发送到 Custom Logger .NET Core 3.1 的参数

Accessing parameters sent to the Custom Logger .NETCore 3.1

我正在尝试实现自定义 ILogger 。网络核心 3.1

CustomLogger class 实现了 ILogger。需要实施的方法之一是:

 public class AuditLogLogger: ILogger
 {
    public IDisposable BeginScope<TState>(TState state)
    {
        return null;
    }

    public bool IsEnabled(LogLevel logLevel)
    {
        return true;
    }
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{
   // How can I access the parameters I sent it from the controller?
}
}

我从我的控制器触发了 LogInformation 方法并传递了一个字符串, 和这样的 KeyValuePair 列表:

List<KeyValuePair<string, string>> udf = new List<KeyValuePair<string, string>>();
udf.Add(new KeyValuePair<string, string>("Test", "Test"));
_logger.LogInformation("This is a test", udf);

我的代码能够进入 Log 但我需要根据传入的参数执行一些逻辑。如何访问传入的参数?

我最终做了一个肮脏的解决方案 基本上,让我的控制器发送一个包含列表和消息的 json 字符串,然后让 Log 函数反序列化它,例如

string message = "this is a test";
List<KeyValuePair<string, string>> udf = new List<KeyValuePair<string, string();
udf.Add(new KeyValuePair<string, string>("Test", "Test"));
JObject obj = new JObject();
obj["Message"] = message;
obj["MyList"] = JArray.FromObject(udf);

日志消息需要反序列化

我确定有更清洁的解决方案