ILogger: метод журнала: невозможно отправить пользовательскую переменную - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть проект, в котором используется 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 голосов
/ 26 февраля 2019

Как заметил Snakefoot,

Если вы хотите использовать ILogger инъекцию с NLog, вы можете использовать

При правильной настройке вы можете сделать:

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

И захватить те с ${message} и / или ${event-properties:simpleText} / ${event-properties:complexObject}.См. Как использовать структурированное ведение журнала .

...