登录C#时出错

Rod*_*ler 73 c# error-logging error-reporting

我正在从C++编码切换到C#.我需要用C#中类似的东西替换我的C++错误日志/报告宏系统.

在我的C++源代码中,我可以写

LOGERR("有些错误"); 或LOGERR("输入%s和%d出错",stringvar,intvar);

宏和支持库代码然后将(可能是varargs)格式化的消息与源文件,源代码行,用户名和时间一起传递到数据库中.相同的数据也被填充到数据结构中,以便稍后向用户报告.

有没有人有C#代码片段或指向执行此基本错误报告/日志记录的示例的指针?

编辑: 当我问这个问题时,我对.NET很陌生,并且不知道System.Diagnostics.Trace.System.Diagnostics.Trace是我当时需要的.从那以后,我在日志记录要求更大,更复杂的项目中使用了log4net.只需编辑500行XML配置文件,log4net即可完成您需要的所有内容:)

Chr*_*s S 72

很多log4net都支持这里,所以我相信这会被忽略,但我会添加自己的偏好:

System.Diagnostics.Trace
Run Code Online (Sandbox Code Playgroud)

这包括监听您的Trace()方法的侦听器,然后写入日志文件/输出窗口/事件日志,包含的框架中的那些DefaultTraceListener,TextWriterTraceListener以及EventLogTraceListener.它允许您指定级别(警告,错误,信息)和类别.

MSDN上的跟踪类
写入Web应用程序中的事件日志
UdpTraceListener - 将log4net兼容的XML消息写入日志查看器,例如log2console

  • +1小额外添加,当且仅当您使用TRACE预处理器符号编译时,Trace才处于活动状态. (20认同)
  • 您可以覆盖`TextWriterTraceListener`中的`WriteLine()`方法,以在日志文件中实现自动时间戳功能.请参阅[此CodeProject文章](http://www.codeproject.com/KB/dotnet/customnettracelisteners.aspx),第6节. (6认同)

Mit*_*eat 41

我强烈推荐查看log4Net.这篇文章涵盖了入门所需的大部分内容.


Mat*_*son 15

另一个好的日志库是NLog,可以登录到很多不同的地方,比如文件,数据库,事件记录器等.


小智 14

我使用The Object Guy的Logging Framework - 对大多数尝试它的人都这样做.这家伙有一些有趣的评论.


Eri*_*ver 11

Enterprise Librarylog4net的可靠替代品,它还提供了许多其他功能(缓存,异常处理,验证等).我几乎在我构建的每个项目中使用它.

强烈推荐.


Ben*_*ein 5

即使我个人讨厌它,log4net似乎也是C#日志记录的事实标准.样品用法:

log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
log.Error(“Some error”);
log.ErrorFormat("Error with inputs {0} and {1}", stringvar, intvar);
Run Code Online (Sandbox Code Playgroud)

  • 它完成了工作,但我讨厌文档,并且厌倦了花了很多时间修改配置文件并且基本上是盲目的,直到我可以按照我想要的方式获得相对简单的工作. (12认同)
  • 我已经使用了log4net并且欣赏它是一个强大的工具(NHibernate和其他人使用它).但我很好奇为什么人们不喜欢使用.NET 2.0内置跟踪?使用不同类型的监听器和一些工具,它似乎比log4net(这是一个java端口)要麻烦得多. (4认同)

小智 5

正如我在另一个帖子中所说,我们多年来一直在多个生产应用程序中使用The Object Guy的Logging Framework.它非常易于使用和扩展.