Почему NLog не производит никакого вывода, когда мой макет начинается с $ {pad ...} - PullRequest
0 голосов
/ 10 июня 2019

Рассмотрим следующий файл конфигурации в NLog.config:

<?xml version="1.0" encoding="utf-8"?>

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true">

  <!-- 
  See https://github.com/nlog/nlog/wiki/Configuration-file 
  for information on customizing logging rules and outputs.
   -->
  <targets async="true">
    <target xsi:type="Trace" name="DebugView"
            rawWrite="true"
            layout="NEX|${pad:padding=-5:inner=${uppercase:${level}}}|${pad:padding=-16:inner=${callsite:className=true:fileName=false:includeSourcePath=false:methodName=false:includeNamespace=false}}|${message}" />
    <target xsi:type="File" name="LogFile"
            filename="${environment:variable=UserProfile}/logs/TA.Nexdome.Server-${filesystem-normalize:fSNormalize=true:inner=${shortdate}-${windows-identity}-${machinename}.log}"
            layout="${time}|${pad:padding=-5:inner=${uppercase:${level}}}|${pad:padding=-16:inner=${callsite:className=true:fileName=false:includeSourcePath=false:methodName=false:includeNamespace=false}}|${message}" />
  </targets>
  <rules>
    <logger name="*" minlevel="Trace" writeTo="DebugView" />
    <logger name="*" minlevel="Trace" writeTo="LogFile" />
  </rules>
</nlog>

Для цели name="DebugView", если я изменю определение макета, чтобы удалить буквальный текст NEX| с самого начала, тогда я вообще ничего не получу.

Если я поставлю что-нибудь перед ${pad, даже хотя бы один |, тогда я получу вывод.

Может ли это быть ошибкой в ​​логике макета?

1 Ответ

0 голосов
/ 10 июня 2019

Работает для меня в демонстрационном случае, см. https://github.com/304NotModified/NLog-Demo-cases/tree/master/PadOutput

enter image description here

...