带邮件目标的

时间:2017-03-30 14:35:34

标签: nlog

我正在尝试在发生错误时向自己发送包含最新日志条目的电子邮件。但我不希望收到任何邮件,除非记录了实际的ERROR级别条目,因此我将bufferSize设置为一个大数字。我的问题是,当记录ERROR级别条目时,仅当实际bufferSize被命中时,才会触发邮件目标,这意味着自bufferSize以来我根本没有收到任何邮件太大了我的NLog.config就像这样:

<targets>
  <target name="mailautoflush" xsi:type="AutoFlushWrapper" condition="level >= LogLevel.Error">
    <target name="mailbuffer" xsi:type="BufferingWrapper" bufferSize="1000000">
      <target name="mail" xsi:type="Mail" ... />
    </target>
  </target>
</targets>
<rules>
    <logger name="*" minlevel="Info" writeTo="mailautoflush"></logger>
</rules>

我做错了什么?另外,有更好的方法吗?使用AutoFlushWrapper / BufferingWrapper技巧似乎是一个黑客。谢谢!

2 个答案:

答案 0 :(得分:2)

它仅在触发LogEvent报告已到达其最终目标后执行刷新。由于LogEvent驻留在缓冲区中,因此永远不会触发刷新。

创建PR:https://github.com/NLog/NLog/pull/2042

答案 1 :(得分:0)

您的代码看起来有效。

  

此外,还有更好的方法吗?使用AutoFlushWrapper / BufferingWrapper技巧似乎是一个黑客。谢谢!

它更像是模块化设计 - 您可以将块彼此组合在一起。