问题描述
我正在尝试实现自定义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);
日志消息需要反序列化
我确定有更清洁的解决方案