Конфигурация NLog не читает логическое свойство

У меня есть следующий фильтр NLog (вывод логгера в БД):

<logger name="*" minlevel="Error" writeTo="Database" >
  <filters>
    <when condition="${event-properties:item=LogToDatabase} == false" action="Ignore"/>
  </filters>
</logger>

И так я называю NLog:

Log.Error().Message("test").Property("LogToDatabase", false).Write();

Конфигурация, похоже, не работает со значениями bool, однако единственный способ, которым мне удалось заставить ее работать, - это использовать такие строки в конфигурации, как это:

<when condition="'${event-properties:item=LogToDatabase}' == 'False'" action="Ignore"/>

Затем вызываем NLog со строковым свойством:

Log.Error().Message("test").Property("LogToDatabase", false.ToString()).Write();

Есть ли способ иметь логическую проверку в конфигурации?


person Kal    schedule 22.05.2018    source источник


Ответы (1)


Средства визуализации макета в NLog отображаются только как текст. Вы можете увидеть код для свойств событий здесь: //github.com/NLog/NLog/blob/e0650c42b4ab3660abc60717e50535d20763289c/src/NLog/LayoutRenderers/EventPropertiesLayoutRenderer.cs

Таким образом, вы не можете проверять выражения NLog как bool.

person Alexey.Petriashev    schedule 22.05.2018
comment
Можно ли использовать формат, чтобы каким-то образом установить тип Boolean, как показано в примере DateTime? - person Kal; 22.05.2018
comment
Формат может использоваться для дополнительного форматирования. Но результат - текст. - person Alexey.Petriashev; 22.05.2018
comment
Вы также можете написать собственный метод условия, который оценивается как bool. Пример: github.com/NLog/NLog/ Стандартные методы условия: NLog / blob / - person Alexey.Petriashev; 22.05.2018
comment
Нестандартное состояние выглядит намного чище. - person Kal; 22.05.2018
comment
просто короткий вопрос ... если bools не переводятся должным образом в выражениях NLog, во что они переводятся? Остаются ли они как объекты (.Property (object, object))? - person Kal; 23.05.2018
comment
Они остаются объектами, но отображаются как строка с определенным форматом и культурой. - person Alexey.Petriashev; 23.05.2018