NLog Внутренний журнал исключений

Я пытаюсь регистрировать внутренние сообщения об исключениях с помощью NLog. Это часть моего файла NLog.config:

    <target name="errors" xsi:type="File" layout="${longdate}${newline}
        - Exception Message: ${exception:format=Message}${newline}
        - InnerException Message: ${exception:innerExceptionSeparator=TEXT}${newline}"
        fileName="\Logs\errors-${shortdate}.log"
       concurrentWrites="true" />
    </targets>

Я получаю то же сообщение See the inner exception for detailsдля обоих Exception Message а также InnerException Message строки файла NLog.config.

2 ответа

Решение

Это сработало для меня:

  <target name="errors" xsi:type="File" layout="
            ${message}
            ${onexception:EXCEPTION OCCURRED\:
            ${exception:format=type,message,method:maxInnerExceptionLevel=5:innerFormat=shortType,message,method}}"
            fileName="\Logs\errors-${shortdate}.log"
            concurrentWrites="true"
            />
  </targets>

Другая возможность - добавить новую строку между внутренними исключениями - использовать перенос строки. &#xD;&#xA в XML, так как innerExceptionSeparator не анализируется каким-то особым образом и загружается так, как написано. Так innerExceptionSeparator=${newline} не будет работать.

layout="${message}${onexception:${newline}${exception:maxInnerExceptionLevel=10:innerExceptionSeparator=&#xD;&#xA;&#x9;:format=shortType,message}} 

это приведет к тому, что внутренний текст исключения будет начинаться с новой строки и с отступом на символ табуляции

Однако это работает, только если ILogger.Error(Exception, string) метод используется.ILogger.Error(Exception) игнорирует этот макет

Другие вопросы по тегам