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