首页 > 解决方案 > ILogger:记录方法:无法发送用户定义的变量

问题描述

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

标签: c#loggingnlog

解决方案


正如蛇足所说,

如果你喜欢在ILoggerNLog 中使用注入,你可以使用

正确设置后,您可以执行以下操作:

_logger.LogInformation("Log message with {simpleText} and {@complexObject}", myString, myObject);

${message}并使用和/或${event-properties:simpleText}/捕获那些${event-properties:complexObject}。请参阅如何使用结构化日志记录


推荐阅读