【问题标题】:C# Exception logging ideasC# 异常日志记录思路
【发布时间】:2026-02-03 05:55:01
【问题描述】:

我正在开发的 C#/ASP.NET 项目即将结束,在可预见的未来,我必须在其他 C# 项目中支持这个项目。我真的需要一个好的、简单和全局的方式来记录所有已生成异常的详细信息,或者通过电子邮件发送给我/记录到数据库/等,同时也向用户显示一个“简单”版本。

目前有哪些 C# 可用的解决方案?此外,由于我的程序在没有日志记录功能的情况下几乎完成,因此只要抛出异常而不显式调用它,以某种方式执行我的日志记录代码会很棒。

【问题讨论】:

  • 您可以快速编写自己的,也可以使用微软的..

标签: c# asp.net logging exception-handling


【解决方案1】:

log4net 来自 apache,日志记录块来自最佳 practices and patterns 来自 microsoft。

如果您有自定义异常,则可以在其中包含日志记录功能。

【讨论】:

  • 可能是一个简单的错字,但认为您的意思是 log4net
【解决方案2】:

使用艾玛。您可以从 NUGET 获得它。 Log4net 也是一个不错的选择。

只需将 Application_Error 方法添加到 global.asax 并在此处处理您的错误。

【讨论】:

    【解决方案3】:

    您可以创建一个处理所有日志记录并返回信息的类,这些信息可以放在一个简单的消息框中,告诉用户友好的想法,然后只需在可疑代码上调用您的类方法。这是我通常做的。

    或者,如果我在错误的树上吠叫(确实发生了),这可能会对您有所帮助

    http://csharp-source.net/open-source/logging

    【讨论】:

      【解决方案4】:

      考虑Windows Error Reporting。要使用 WER,只需允许意外异常逃离您的进程。操作系统将捕获快照并(在用户许可的情况下)将其上传到 Microsoft 的服务器,在那里它会被自动分析并(启发式地)放入“存储桶”中(单个“存储桶”中的所有报告很有可能是由同样的错误)。

      这使您不仅可以查看异常,还可以收集引发异常时进程的快照。 VS2010 能够打开这些快照(小型转储)。 WER 还包括用于确定哪些错误更重要(即影响更多用户)的工具。

      您确实需要 Authenticode 代码签名证书才能使用 WER(过去几年价格在每年 100 美元到 400 美元之间)。

      【讨论】: