0

我有以下 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();

有没有办法在配置中进行布尔检查?

4

1 回答 1

1

NLog 中的布局渲染器仅呈现为text。您可以在此处查看事件属性的代码:https ://github.com/NLog/NLog/blob/e0650c42b4ab3660abc60717e50535d20763289c/src/NLog/LayoutRenderers/EventPropertiesLayoutRenderer.cs

所以你不能将 NLog 表达式检查为 bool。

于 2018-05-22T19:28:00.923 回答