【发布时间】:2018-02-17 00:46:31
【问题描述】:
我有一个自定义记录器,我想创建一个名为
的扩展方法SetContext(uniqueKey, object)
我可以在自定义记录器中设置属性并在记录消息时记录该上下文。
所以代码看起来像这样
_logger
.SetContext(User.Email(), User)
.LogError(1, new Exception("foo foo foo"), "bleep Bloop");
我似乎面临的问题是 ILogger,通过我的控制器中的 DI 返回,然后由我的扩展方法使用,实际上并不是我的自定义 ILogger 实现。
public static ILogger SetContext(this ILogger logger, string uniqueUserIdentifier, object context)
{
var redisPublisherLogger = logger as RedisPublisherLogger;
if (redisPublisherLogger == null)
{
return logger;
}
redisPublisherLogger.Context = new LoggingContext
{
ContextData = context,
UniqueUserIdentifier = uniqueUserIdentifier
};
return logger;
}
那么无论如何我可以做这样的事情,我试图避免覆盖 ILogger 上的所有日志记录方法。
任何帮助将不胜感激! 谢谢
【问题讨论】:
标签: logging dependency-injection asp.net-core asp.net-core-mvc error-logging