.net - 使用 NLog 仅将错误记录到 StdErr 输出流
问题描述
NLog 支持将error="true"
键值对添加到target
XML 节点,如下所述:https ://github.com/NLog/NLog/wiki/Console-target
但是,我注意到这会将所有日志输出到 StandardError 流,而不仅仅是Error
级别日志。
例如,当我添加error="true"
键值对时,这两条日志行都将转到 stderr:
logger.Info("This should not go to stderr... but it does!");
logger.Error("This works!");
如何使 NLog 仅将错误输出到 stderr 流,而不是所有日志?
为了完整起见,这是我的 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">
<targets>
<target name="logconsole" xsi:type="Console" error="true" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logconsole" />
</rules>
</nlog>
解决方案
到该error="true"
目标的所有消息都将发送到错误流。
仅对于错误事件,您需要两个目标;一种用于错误流和非错误流。使用两条规则,您可以将事件发送到正确的目标。
例如:
<?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">
<targets>
<target name="logconsoleError" xsi:type="Console" error="true" />
<target name="logconsole" xsi:type="Console" />
</targets>
<rules>
<logger name="*" minlevel="Error" writeTo="logconsoleError" final="true" />
<logger name="*" minlevel="Info" writeTo="logconsole" />
</rules>
</nlog>
请注意我在这里使用该final
属性,否则信息和警告日志将被发送到两个目标。
推荐阅读
- javascript - 未捕获(承诺):错误:无法匹配任何路线(Angular8)
- botframework - 由于 QnAMaker 连接问题,Bot 未响应 Bot Framework Emulator 中的消息
- json - 我需要将邮递员请求的正文与另一个网站的 XHR 进行比较
- javascript - 在 JavaScript 中完成第一个递归分支后返回树
- git - 从本地服务器克隆存储库缺少提交
- qt - QML 将键盘导航与多个列表视图同步
- azure - 通过电子邮件发送 Azure Metrics 图表 - 以任何方式
- c# - 检查 db 中的值列表并检索属于日期时间月份属性的项目
- ios - 如何将 FirebaseUI 与多个数据源一起用于 tableview?
- vue.js - 无法显示来自请求 Vuejs 的值