我有一个使用NLog的现有项目。因此,我已经在现有项目中编写了调试/警告方法。现在扩展项目。在新项目中,我想使用Microsoft.Extensions.Logging.ILogger。我尝试使用现有代码,而不是从头开始编写。像这样:
public void Log<TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, LogInfo logInfo, Exception exception, Func<TState, Exception, string> formatter)
{
NLog.ILogger logger = null;
if (logLevel == Microsoft.Extensions.Logging.LogLevel.Debug)
{
logger.Debug(logInfo, logLevel );
}
}
LogInfo类是用户定义的类。我不能那样做,因为方法定义为
public void Log<TState>(Microsoft.Extensions.Logging.LogLevel logLevel, EventId eventId, TState logInfo, Exception exception, Func<TState, Exception, string> formatter)
现在如何将logInfo传递给方法?任何有关Tstate的好的文档也将不胜感激。
答案 0 :(得分:0)
如Snakefoot所述,
如果您想对NLog使用ILogger
注入,则可以使用
正确设置后,您可以执行以下操作:
_logger.LogInformation("Log message with {simpleText} and {@complexObject}", myString, myObject);
并使用${message}
和/或${event-properties:simpleText}
/`$ {event-properties:complexObject}捕获它们。参见How to use structured logging。