加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – NLog配置为自动记录所有异常?

发布时间:2020-12-15 04:35:26 所属栏目:百科 来源:网络整理
导读:有没有办法配置NLog自动记录应用程序可以发送的所有异常?目前我要去所有的TRY / CATCH区块,并手动添加日志在CATCH – 但如果我想念一些?如果将来有人会做什么呢? 有没有办法让NLog总是记录所有异常?特别是一些没有被抓住,可能会导致弹出窗口? 解决方法
有没有办法配置NLog自动记录应用程序可以发送的所有异常?目前我要去所有的TRY / CATCH区块,并手动添加日志在CATCH – 但如果我想念一些?如果将来有人会做什么呢?

有没有办法让NLog总是记录所有异常?特别是一些没有被抓住,可能会导致弹出窗口?

解决方法

据我所知,没有办法限制日志记录所有异常.

如果您想要的是记录未处理的异常,则可以在初始化应用程序时向AppDomain添加“UnhandledException Handler”.
请注意,在某些情况下,可能无法记录错误(例如,在OutOfMemory异常情况下或某些可怕情况下).

请注意,AppDomain还具有您可以订阅的FirstChanceException事件,但这意味着您会收到所有发生的异常的通知(并且可能由用户代码处理) – 在这很多.

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(AppDomain_CurrentDomain_UnhandledException);

static void AppDomain_CurrentDomain_UnhandledException(object sender,UnhandledExceptionEventArgs e)
{
    // use logger here to log the events exception object
    // before the application quits
}

请注意,这将只允许您记录导致应用程序崩溃的异常 – 您不能阻止它崩溃(因此名称:未处理的异常).

另一个选择是使用面向方面编程(AOP) – 并在每次方法调用之后引入一个日志记录方面,以防发生错误.如果您的应用程序使用分层架构,则可能相对容易做到(例如,为业务逻辑层的所有调用添加一个方面…).

您可能会发现像PostSharp或Spring.Net这样的框架很有用(通常他们的网站提供了一些简单的例子).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读