C # Castle Windsor DI с LoggingFacility и core.logging не регистрирует исключение

#c# #logging #castle-windsor #nlog

#c# #ведение журнала #castle-windsor #nlog

Вопрос:

Для проекта я использую Castle Windsor DI (новый для меня). Castle.Core.Logging Пространство имен с его интерфейсом Logger имеет эти методы (также с Debug, Error и т.д.):

  • void Fatal(string message, Exception exception);
  • void Fatal(string message);

Однако, когда я использую методы с параметром exception, он регистрирует только сообщение, а не исключение. Кажется, я не могу понять, почему он регистрирует только сообщение, может быть, я пропустил настройку? В настоящее время для ведения журнала используется NLog. Регистратор внедряется в базовый класс, подобный этому:

 public ILogger Log { get; set; } = NullLogger.Instance;
  

Эта настройка из NLog и средства ведения журнала Castle для ведения журнала

Комментарии:

1. Пожалуйста, поделитесь своей конфигурацией NLog. Используем ли мы ${exception} ?

Ответ №1:

Вы можете настроить макет и содержимое сообщений, которые будет выдавать вам Nlog, установив это в файле конфигурации Nlog. Для этого вы могли бы написать, например:

 <targets>
    <!-- write logs to file -->
    <target xsi:type="File" name="logfile" fileName="c:tempconsole-example.log"
            layout="${longdate}|${level}|${message} |${all-event-properties}${exception:format=tostring}" />
    <target xsi:type="Console" name="logconsole"
            layout="${longdate}|${level}|${message} |${all-event-properties}${exception:format=tostring}" />
  </targets>
  

https://github.com/NLog/NLog/wiki/Getting-started-with-.NET-Core-2—Console-application