4

我工作的一个.NET v3.5的WinForms应用程序,并想利用一些支持:针对C#.NET v3.5应用程序的日志/错误处理框架的最佳方法? (?企业库/ log4net的/)

一)日志(到文件&或许窗事件)

b)的错误处理/异常处理框架 - 以帮助识别信息可显示用户与代码中进行处理,并记录

C)红利额外的将是如何通过捕获/积累严重的错误给我一个服务器端的web服务(当它要求你向开发者反馈问题时类似于firefox) - 但是,如果这使得我的复杂性翻倍在问了降本要求

事情我知道的包括:

  • log4net的 - 似乎流行,但不知道这是否与我的要求B帮助)
  • 企业库 - 我已经看着然而,似乎有点重(有点小题大做)

感谢

回答

1

+1对于log4net。关于(b),我倾向于定义我自己的自定义异常(全部来源于相同的基类,例如“BusinessException”),由BLL引发需要传递给用户的错误(输入违反业务规则,用户授权失败,...)。如果将BLL部署为Web服务,则这些异常将与SOAP客户端(SOAP 1.1)/发件人(SOAP 1.2)错误代码一起包装在SOAP错误中。

然后在UI层中,任何带有FaultCode.IsSenderFault = true的BusinessException或FaultException指示应向最终用户显示错误消息。记录任何其他异常,并向最终用户显示一条通用消息(“发生了某些不良事件”)。

就我个人而言,我认为区分要显示给用户的消息只能通过应用程序特定的方式明智地完成,例如上述。

关于(c)您可以编写一个自定义的log4net appender,向您的web服务发送严重错误(可能通过MSMQ异步执行)。

编辑

在回应的意见,我不知道任何第三方框架,做到这一点的;我们通过一个非常轻量级的内部框架来实现它(它也有其他基本的东西,比如围绕log4net的精简提供程序模型API,这样我们的内部代码就不会明确依赖于log4net,我们将能够切换到不同的如果出现更好的日志框架,或者我们的应用程序部署到管理员更喜欢不同的站点的日志框架)。

+0

谢谢 - 您对我的Q2的回答正是我感兴趣的事情类型。是不是现有的非常轻量级的框架可以解决您所知道的问题? (而不是自己滚动) – Greg 2010-01-28 08:42:12

2

我用两个,但最后还是赞成的log4net的下降EntLib,因为它是恕我直言,EA ser使用,配置和更轻量级。
无论如何,两个库都可以,对于给定的项目来说,这更符合个人理由。

+0

做了log4net帮助您区分可能希望用户看到的文本与您希望在日志文件中可能会返回的文本之间的区别开发者?感谢 – Greg 2010-01-28 07:12:21

+0

看看它的文档,http://logging.apache.org/log4net/release/manual/configuration.html 基本上,你可以用不同的appender和过滤日志来实现你想要的,正如官方文档中所解释的那样。 – 2010-01-28 07:49:16

1

Log4net是我的最爱。高度可定制,易于使用。

至于一个聚合日志事件报告的Web服务,我遇到了同样的问题,最终我自己创建了一个服务:bugcollect.com。你可以从网站上下载一个附加的log4net,看看你自己。该服务会报告分析并将类似报告汇总到存储桶中。您可以在提交新报告,新存储桶或新来源时设置电子邮件通知。您还可以设置对存储桶的响应,并在遇到类似事件时将此响应返回给应用程序,例如指示用户下载更新的版本。该服务具有提交报告的RESTful界面,但对于.Net,Java,log4net和log4j,有free client libraries可供下载。您可以尝试使用功能有限的免费帐户,也可以输入促销代码BETA进行完整功能试用。

2

当然,我有偏见。但请帮我一个忙,看看我的logging framework。比其他一些框架更容易使用。它还附带了一个示例Windows应用程序,可实时显示日志。还有一个用于查看日志的Visual Studio插件。将日志发送到Web服务或其他任何你想要的东西也很容易。 (例如,我有一些用于登录Twitter的示例代码。)

+0

是否为我的b)部分提供了特定的支持? – Greg 2010-01-28 19:43:43

+0

@Greg我认为b部分是非常特定于应用程序的东西。我的框架没有解决这个问题。您需要确定如何处理每个异常,以及是否显示用户有关它的信息。 – TheObjectGuy 2010-01-28 22:12:43

+0

感谢您的回复 – Greg 2010-01-28 23:20:55

相关问题