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

问题描述

我正在尝试实现自定义ILogger。 NetCore 3.1

CustomLogger类实现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?
}
}

在控制器上,我触发了Log@R_112_4045@ion方法并传递了一个字符串, 以及这样的keyvaluePair列表:

List<keyvaluePair<string,string>> udf = new List<keyvaluePair<string,string>>();
udf.Add(new keyvaluePair<string,string>("Test","Test"));
_logger.Log@R_112_4045@ion("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);

日志消息需要反序列化

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