ILogger:日志方法:无法发送用户定义的变量

时间:2019-02-23 00:34:29

标签: c# logging nlog

我有一个使用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的好的文档也将不胜感激。

1 个答案:

答案 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