我正在从C++编码切换到C#.我需要用C#中类似的东西替换我的C++错误日志/报告宏系统.
在我的C++源代码中,我可以写
LOGERR("有些错误"); 或LOGERR("输入%s和%d出错",stringvar,intvar);
宏和支持库代码然后将(可能是varargs)格式化的消息与源文件,源代码行,用户名和时间一起传递到数据库中.相同的数据也被填充到数据结构中,以便稍后向用户报告.
有没有人有C#代码片段或指向执行此基本错误报告/日志记录的示例的指针?
编辑: 当我问这个问题时,我对.NET很陌生,并且不知道System.Diagnostics.Trace.System.Diagnostics.Trace是我当时需要的.从那以后,我在日志记录要求更大,更复杂的项目中使用了log4net.只需编辑500行XML配置文件,log4net即可完成您需要的所有内容:)
很多log4net都支持这里,所以我相信这会被忽略,但我会添加自己的偏好:
System.Diagnostics.Trace
这包括监听您的Trace()
方法的侦听器,然后写入日志文件/输出窗口/事件日志,包含的框架中的那些DefaultTraceListener
,TextWriterTraceListener
以及EventLogTraceListener
.它允许您指定级别(警告,错误,信息)和类别.
MSDN上的跟踪类
写入Web应用程序中的事件日志
UdpTraceListener - 将log4net兼容的XML消息写入日志查看器,例如log2console
我强烈推荐查看log4Net.这篇文章涵盖了入门所需的大部分内容.
另一个好的日志库是NLog,可以登录到很多不同的地方,比如文件,数据库,事件记录器等.
我使用The Object Guy的Logging Framework - 对大多数尝试它的人都这样做.这家伙有一些有趣的评论.
Enterprise Library是log4net的可靠替代品,它还提供了许多其他功能(缓存,异常处理,验证等).我几乎在我构建的每个项目中使用它.
强烈推荐.
即使我个人讨厌它,log4net似乎也是C#日志记录的事实标准.样品用法:
log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program)); log.Error(“Some error”); log.ErrorFormat("Error with inputs {0} and {1}", stringvar, intvar);
正如我在另一个帖子中所说,我们多年来一直在多个生产应用程序中使用The Object Guy的Logging Framework.它非常易于使用和扩展.