【问题标题】:Nlog: send mail when Loglevel >= Loglevel.Error with last x messagesNlog:当 Loglevel >= Loglevel.Error with last x messages 时发送邮件
【发布时间】:2012-09-13 14:20:38
【问题描述】:

我想用 nlog 做这个(来自 log4net docu):

这个例子展示了如何只传递重要的事件。 LevelEvaluator 的阈值为 WARN。这意味着将为每个记录的 WARN 或更高级别的消息发送一封电子邮件。每封电子邮件还将包含多达 512 条 (BufferSize) 任何级别的先前消息,以提供上下文。未发送的消息将被丢弃。

有可能吗?

我只在 codeproject 上找到了this。 但它使用代表消息数量而非日志级别刷新的包装器目标。

谢谢 托比

【问题讨论】:

  • 这是一个很好的问题,我很惊讶像 NLog 这样出色的工具没有这个选项。我猜想定制 BufferingTargetWrapper.cs 就可以了。你最后解决了这个问题吗?

标签: nlog


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    简单的解决方案,将在错误时写入最后 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      • 1970-01-01
      相关资源
      最近更新 更多