Nlog:当Loglevel> = Loglevel.Error包含最后x条消息时发送邮件

时间:2012-09-13 14:20:39

标签: nlog

我想使用nlog:

执行此操作(来自log4net docu

此示例显示如何仅传递重要事件。 LevelEvaluator指定的阈值为WARN。这意味着将针对记录的每个WARN或更高级别的消息发送电子邮件。每封电子邮件还将包含最多512个(BufferSize)以前任何级别的消息以提供上下文。未发送的邮件将被丢弃。

有可能吗?

我只在codeproject上找到了this。 但它使用一个包装器目标,它代表消息数而不是在日志级别上刷新。

由于 托比

2 个答案:

答案 0 :(得分:1)

有一个QueuedTargetWrapper(一个缓冲日志事件并将它们分批发送到包装目标的目标)  这似乎符合要求。我还没有尝试过。

有一个相关的讨论“The Benefits of Trace Level Logging in Production Without the Drawback of Enormous Files

答案 1 :(得分:0)

简单的解决方案,将在错误时写入最后200个日志事件:

  <target name="String" xsi:type="AutoFlushWrapper" condition="level >= LogLevel.Error" flushOnConditionOnly="true">
     <target xsi:type="BufferingWrapper"
          bufferSize="200"
          overflowAction="Discard">
        <target xsi:type="wrappedTargetType" ...target properties... />
     </target>
  </target>

另请参阅:https://github.com/nlog/NLog/wiki/BufferingWrapper-target