如何为NLog Target添加过滤条件
How to add filter condition for NLog Target
我有一个问题我写了一个 Nlog.target 来登录数据库,但我希望 nlog 应该根据条件登录。如果 dbvalue 为真,我想设置一个条件,然后在 db 中创建日志条目。
我写了下面的代码,它不起作用,dbvalue 是假的,但日志仍然在 db 中生成。
我在我的 startup.cs 文件中添加了这一行
GlobalDiagnosticsContext.Set("dbvalue", "false");
这是我的 nlog.config
<rules>
<logger name="Microsoft.*" maxlevel="Info" final="true" writeTo="" />
<logger name="*" minlevel="Info" writeTo="database" >
<filters>
<when condition="equals('${gdc:dbvalue}', 'true')" action="Log" />
</filters>
</logger>
</rules>
有人可以帮忙吗?
我可能会这样做:
<rules>
<logger name="Microsoft.*" maxlevel="Info" final="true" writeTo="" />
<logger name="*" minlevel="${gdc:dbLogMinLevel:whenEmpty=Off}" writeTo="database" />
</rules>
然后像这样启用数据库记录器:
NLog.GlobalDiagnosticsContext.Set("dbLogMinLevel","Info");
NLog.LogManager.ReconfigExistingLoggers(); // Explicit refresh active Logger-objects
另请参阅:https://github.com/NLog/NLog/wiki/Filtering-log-messages#semi-dynamic-routing-rules
我有一个问题我写了一个 Nlog.target 来登录数据库,但我希望 nlog 应该根据条件登录。如果 dbvalue 为真,我想设置一个条件,然后在 db 中创建日志条目。 我写了下面的代码,它不起作用,dbvalue 是假的,但日志仍然在 db 中生成。
我在我的 startup.cs 文件中添加了这一行 GlobalDiagnosticsContext.Set("dbvalue", "false");
这是我的 nlog.config
<rules>
<logger name="Microsoft.*" maxlevel="Info" final="true" writeTo="" />
<logger name="*" minlevel="Info" writeTo="database" >
<filters>
<when condition="equals('${gdc:dbvalue}', 'true')" action="Log" />
</filters>
</logger>
</rules>
有人可以帮忙吗?
我可能会这样做:
<rules>
<logger name="Microsoft.*" maxlevel="Info" final="true" writeTo="" />
<logger name="*" minlevel="${gdc:dbLogMinLevel:whenEmpty=Off}" writeTo="database" />
</rules>
然后像这样启用数据库记录器:
NLog.GlobalDiagnosticsContext.Set("dbLogMinLevel","Info");
NLog.LogManager.ReconfigExistingLoggers(); // Explicit refresh active Logger-objects
另请参阅:https://github.com/NLog/NLog/wiki/Filtering-log-messages#semi-dynamic-routing-rules