我有一个现有的项目中使用NLog。因此,我已经在现有项目中编写了debug/warn方法。
现在扩展该项目。在新项目中,我想使用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的优秀文档也将不胜感激。
发布于 2019-02-27 02:56:57
就像蛇脚所说的,
如果您喜欢在NLog中使用ILogger注入,您可以使用
对于ASP.NET核心应用程序,请参阅ASP.NET Core with NLog tutorial或
如果设置得当,您可以执行以下操作:
_logger.LogInformation("Log message with {simpleText} and {@complexObject}", myString, myObject);并使用${message}和/或${event-properties:simpleText} / ${event-properties:complexObject}捕获它们。参见How to use structured logging。
https://stackoverflow.com/questions/54837011
复制相似问题