C#日志记录.我该怎么用?

Col*_*e W 28 c# windows logging

我正在寻找一种新的统一日志记录解决方案,用于我们的新系列产品,我想看看Stack Overflow上的一些人的想法.我们需要记录各种应用程序:ASP .net,Windows服务,Web服务,wpf应用程序等.我们只是一个Windows商店.

我们对日志记录解决方案的一些要求包括:

1)日志文件管理

- Ability to split files up over a certain size
- Ability to auto archive/delete after certain period of time
Run Code Online (Sandbox Code Playgroud)

2)能够发送关于记录的某些类型的消息的电子邮件(例如错误)

3)能够将消息写入Windows事件日志

- We need to be able to specify where it's being written in the event log. 
  It would also be nice if it would automatically create the event log source if it does exist.
Run Code Online (Sandbox Code Playgroud)

我已经开始关注nLog,windows trace和log4net.我不仅限于这3只,只是在搜索时出现了很多.

RQD*_*QDQ 17

log4net永远是一个不错的选择.

http://logging.apache.org/log4net/

  • 不,如果你想要一些易于实现的东西,这不是一个好的选择.当然,如果您已经是log4net用户,那么对您来说可能很容易.对于之前从未使用它的人来说,设置它是一个痛苦的屁股. (3认同)

HuB*_*eZa 11

使用.NET常用日志记录.您可以稍后选择特定的提供程序(NLog,CLog,log4net ...),甚至可以创建自定义提供程序.

  • 这类似于Java的apache commons日志记录,同样的参数适用于它的存在.假设您正在编写将在其他代码中使用的库.您不希望在与库交互的任何代码中指定使用哪个日志框架,因为这意味着客户端必须为您的特定框架配置.假设您决定使用log4net,另一个库使用NLog,那么客户端必须同时使用这两个库才能使用这两个库.Commons允许您从客户端代码继承日志记录框架. (7认同)
  • 但是,如果我想避免依赖.NET常见日志记录呢?老实说,这对我来说似乎是一个不必要的抽象层.log4net等本身就是对日志记录的抽象 - 我可能有什么理由想要将一个交换为另一个而不是反对使用.NET公共日志记录的论据? (4认同)

Jor*_*oba 9

而另一个:NLog.

  • 文件 - 单个文件或多个文件,具有自动文件命名和存档功能
  • 事件日志 - 本地或远程数据库 - 将日志存储在支持的数据库中
  • 通过.NET网络 - 使用TCP,UDP,SOAP,MSMQ协议
  • 命令行控制台 - 包括消息的颜色编码
  • 电子邮件 - 您可以在发生应用程序错误时收到电子邮件
  • ASP.NET跟踪
  • 还有很多