【问题标题】:.NET - Exception Logging & Monitoring.NET - 异常记录和监控
【发布时间】:2011-03-19 07:36:03
【问题描述】:

在生产环境中监控异常日志的最佳方式是什么?我有一个应用程序,其中异常记录到文本文件中。每次,我需要访问这些日志文件时,我都必须请求后台团队给我发送一份副本。

为了即兴发挥这个过程,我想到了几个选择:

1) 定期通过电子邮件发送错误日志

2) 将日志文件存入数据库

3) 创建某种监听器对象来监控日志(这甚至可能吗?)

是否有更好的选择以及如何实施?

TIA

【问题讨论】:

  • 有很多针对 Web 应用程序的日志记录解决方案,但我还没有找到一个好的解决方案来报告来自桌面 .net 应用程序的异常和崩溃、合并类似的报告以及获取统计数据和报告。我想关键的区别在于与 Web 应用程序和内置报告机制相比,发送报告的用户/客户数量。能够收集小型转储将是一个巨大的奖励。

标签: .net exception logging monitoring


【解决方案1】:

你应该试试Error Logging Modules And Handlers (ELMAH)

ELMAH 是一个免费的开源错误日志库。它包括以下功能:

  • 错误过滤
  • 在网页上查看错误(可配置的用户角色)
  • RSS 提要
  • 下载为 CSV 文件
  • 以编程方式直接引发异常
  • 通过电子邮件通知

有关如何安装和使用的信息,请查看其页面。

进一步阅读

有关主题的更多信息 在本教程中讨论,请参阅 以下资源:

【讨论】:

    【解决方案2】:

    我强烈推荐log4net。您可以使用它进行几乎任何类型的日志记录,此外,文档页面上甚至还有一个 SMPTAppender 示例,可以找到 here。因此,您实际上可以将异常直接邮寄给您想要的任何人,您可以将它们存储在数据库中,可能性真的无穷无尽。

    【讨论】:

    • 我正在使用 log4net,但不知道 SMTPAppender。我会试一试。
    • 小心它。 SmtpAppender 是同步的,因此它可以阻止您的应用程序。
    • 仅供参考:NLog 也一样,但它内置了异步支持。
    【解决方案3】:

    Elmah 和 log4net 是很好的解决方案,尤其是当您需要在本地存储日志和异常数据时。他们仍然要求您设置电子邮件帐户,或登录某个地方以获取安全存储的日志。

    另一种选择——如果您的数据可以存储在云中——托管异常监控服务,如AppfailAirbrake。这些是基于云的异常监控服务。

    例如,您可以使用 Appfail 插入一个报告模块(类似于 ELMAH 的报告模块),该模块将向其 Web 服务报告异常情况。然后,您可以登录以查看故障分析并注册以接收有关重要故障的通知。

    ** 免责声明:我在 Appfail 工作:-)

    【讨论】:

    • Appfail 看起来很棒。它能否用于报告和调查来自 .NET 桌面应用程序的异常,比如来自数千名用户的异常?我看到 Airbrake 支持通过 API 报告异常,但它似乎缺少一个好的统计和报告模块。
    【解决方案4】:

    我相信您的后台团队可以直接设置对日志的访问权限,前提是您快速了解如何安全地执行此操作。

    就我个人而言,我将大量内容记录到日志文件中,因为各种信息对于棘手的情况都可能有用。但我也将异常直接记录到数据库中,并将它们显示在安全页面上,以便我可以以此为起点。

    【讨论】:

      【解决方案5】:

      您可能会考虑使用Seq - 它是您可以在自己的环境中安装的服务器(MSI 设置),然后使用 NLog、log4net 或 Serilog 将日志发送到。

      一旦您的应用将日志发送到 Seq,您可以使用 Web 界面查询它们或配置通知您的处理程序,可能通过电子邮件但实际上是您选择的任何方式:处理程序可以用 C# 编写并插入。

      我在这两个产品上工作,所以显然不是一个公正的意见,但在使用 log4net 和文本文件多年后,向集中式日志记录和完全结构化事件的飞跃是向前迈出的一大步。

      Serilog 的开源(GitHub 上的 Apache2)并支持多种后端和输出格式。 Seq 是商业的,但提供了一个非常实用的免费版本。

      【讨论】:

      • 我支持这一点,Seq 是一个很棒的工具包,可以提高 SLA 并使故障排除更加容易,这是一个公正的意见!
      猜你喜欢
      • 2012-12-26
      • 2021-09-02
      • 2013-01-13
      • 2022-01-02
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多