0

我可以以某种方式为代码中的致命错误设置事件处理程序吗?如果发生此类错误,我想立即终止应用程序,例如:

void Fail(string format, params object[] args) {
  Logger.Fatal(format, args);
  Environment.Exit(-1);
}

但是我希望这会自动发生:

Logger.Fatal(...); // logs the error and invokes Environment.Exit(-1);

有没有办法为所有致命错误或一些配置选项设置某种回调?

4

1 回答 1

0

是的,您可以使用MethodCalltarget 来执行此操作(请参阅https://github.com/nlog/NLog/wiki/MethodCall-target

这里的例子:

namespace SomeNamespace
{
    using System;

    public class MyClass
    {
        public static void HandleFatalEventLog(string level)
        {
            if(level.Equal("Fatal", StringComparison.OrdinalIgnoreCase)) 
            {
                Environment.Exit(-1);
            }
        }
    }
}

和 NLog.config 文件:

<?xml version="1.0" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
        <target name="m" xsi:type="MethodCall" className="SomeNamespace.MyClass, MyAssembly" methodName="HandleFatalEventLog">
            <parameter layout="${level}" />
        </target>
    </targets>
    <rules>
        <logger name="*" minlevel="Fatal" writeTo="m" />
    </rules>
</nlog>

PS:但是,我不推荐这种方法,记录器不应该关闭应用程序

于 2013-10-10T19:17:19.267 回答