NLog,如何在记录错误和更高级别时执行代码?

NLog, how to execute code on logging ERROR and higher?

我是 NLog 的新手,我想在日志完成后执行一些代码。

基本上,我得到了一个RichTextBoxTargetRichTextBox 默认隐藏。我想在错误日志或更高版本完成时显示它。

如果可能的话,我该怎么做?

这个 RichTextBox 的目的到底是什么?

如果您想在输入错误时显示错误,那么 ErrorProvider 更适合。

如果您想将错误日志也捕获到此 RTB 以及 say 文件中,那么您可以编写自己的目标,注册它,然后它可以处理事件。

参见: https://github.com/NLog/NLog/wiki/Extending-NLog

听起来您希望有 2 个目标侦听事件:

  • RichTextBox-捕获错误中所有事件的目标-window.
  • MethodCall-Target 用于对错误事件做出反应并显示错误-window.

所以诀窍就是设置两个目标:

<nlog>
    <targets>
        <target name="richtext" xsi:type="RichTextBox" />
        <target name="showrichtext" xsi:type="MethodCall" className="SomeNamespace.MyClass, MyAssembly" methodName="LogMethod" />
    </targets>

    <rules>
        <logger name="*" minlevel="Debug" writeTo="richtext" />
        <logger name="*" minlevel="Error" writeTo="showrichtext" />
    </rules>
</nlog>

并实现一个合适的静态方法供MethodCall-Target调用。

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

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