我在C ++编码到C#让我的开关。 我需要替换我的C ++错误日志/报告与C#类似宏系统。
在我的C ++源代码,我可以写
LOGERR( “一些错误”); 或LOGERR( “错误与输入%s和%d”,STRINGVAR,intvar);
然后,将宏&支撑库代码与源文件,源极线,用户名和时间经过(可能可变参数)格式的消息到数据库中。 同样的数据也塞进数据结构后向用户报告。
是否有人有C#代码片段或指针到这样做基本的错误报告/记录的例子吗?
编辑:当时我问这个问题,我是真正的新的.NET和不知道System.Diagnostics.Trace的时间。 System.Diagnostics.Trace是我需要的东西在那个时候。 从那时起,我已经用在哪里的日志需求是更大,更复杂的项目log4net的。 只需编辑500线的XML配置文件和log4net的会做你永远都需要的一切:)
Answer 1:
log4net的主张在这里的很多,所以我敢肯定,这将被忽略,但我会加上我自己的偏好:
System.Diagnostics.Trace
这包括听你的听众Trace()
方法,然后写入日志文件/输出窗口/事件日志,在框架中那些包含有DefaultTraceListener
, TextWriterTraceListener
和EventLogTraceListener
。 它允许你指定水平(警告,错误信息)和类别。
微量元素对MSDN类
写入事件日志在Web应用程序
UdpTraceListener -写log4net的兼容的XML消息发送到日志查看器如log2console
Answer 2:
我会强烈建议看log4net的 。 这个职位涵盖了大部分的你需要开始什么。
Answer 3:
另一个好日志库是NLOG ,可以登录到很多不同的地方,如文件,数据库,事件记录器等。
Answer 4:
我使用的对象Guy的日志框架 --as谁做尝试最多的人。 这家伙有一些有趣的评论一下吧。
Answer 5:
企业图书馆是一个坚实的替代log4net的 ,它提供了一堆其他的功能,以及(缓存,异常处理,验证,等等)。 我用它在几乎每一个项目我构建。
强烈推荐。
Answer 6:
尽管我个人讨厌它, log4net的似乎是C#记录的事实标准。 用法示例:
log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
log.Error(“Some error”);
log.ErrorFormat("Error with inputs {0} and {1}", stringvar, intvar);
Answer 7:
正如我在另一个线程说,我们已经使用过的对象Guy的日志框架在多个生产应用了好几年。 这是超级容易使用和扩展。
Answer 8:
log4net的是一个比较全面的日志框架,将允许您登录到不同层次(调试,错误,致命)和输出这些日志语句可能在不同的地方(滚动文件,Web服务,Windows错误)
我能够很容易地通过创建记录器的实例任何地方登录
private static readonly ILog _log = LogManager.GetLogger(typeof([Class Name]));
然后记录错误。
_log.Error("Error messsage", ex);
Answer 9:
Serilog晚在这里聚会,但带来了一些有趣的选项表。 它看起来很像传统的基于文本的记录仪的使用方法:
Log.Information("Hello, {0}", username);
但是,不像早期的框架,只写文字的时候,例如到文件或控制台呈现的消息和参数为一个字符串。
我们的想法是,如果您使用的是日志一“NoSQL'式的数据存储,您可以录制喜欢的活动:
{
Timestamp: "2014-02-....",
Message: "Hello, nblumhardt",
Properties:
{
"0": "nblumhardt"
}
}
在.NET格式字符串语法的扩展,以便你可以写在上面的例子:
Log.Information("Hello, {Name}", username);
在这种情况下,属性将被称为Name
(而不是0
),使得查询和相关性更容易。
目前已经储存了几个不错的选择。 MongoDB的和Azure的表存储似乎是为DIY颇为流行。 我最初建Serilog(虽然它是一个社区项目),我现在正在一个叫产品序列 ,它提供存储和这些类型的结构化日志事件的查询。
Answer 10:
您可以使用内置的.NET日志记录。 调查TraceSource和TraceListeners,他们可以在config文件进行配置。
Answer 11:
同上,用于log4net的。 我将我的两个位,因为实际使用中,是有意义的看一些开源实现看到真实世界的代码示例用一些方便的补充。 对于log4net的,我建议你把我的头看着上面的潜台词 。 特别是看看在应用程序启动和集信息位。
Answer 12:
继意见夫妇realting的使用进行日志记录的方法System.Diagnostics程序,我也想指出的DebugView工具检查必要时调试输出非常整洁的-除非你需要它,就没有必要该应用程序产生的日志文件,如当需要你只是启动DebugView中。
Answer 13:
内置在System.Diagnostics程序跟踪是在.NET Framework不错,我用它在许多应用程序。 然而,主要的原因我仍然使用log4net的一个是内置的.NET框架跟踪缺乏许多log4net的已经内置用品有用的全功能追加程序的。
比如是不是真的有在一个比一个VB.NET的DLL其他.NET框架中定义一个良好的滚动文件的跟踪监听器,真的是不是所有的功能齐全。
根据您的开发环境我会建议使用log4net的,除非第三方工具不可用,那么我会说使用System.Diagnostics程序跟踪类。 如果你真的需要一个更好的appender / TraceListener的你可以自己始终贯彻它。
比如我们的许多客户要求对他们公司的计算机上安装的时候,所以在这种情况下,.NET框架跟踪类是一个完美的结合,我们不使用开源库。
另外- http://www.postsharp.org/是一个AOP库我期待成也可以帮助记录为这里展示的代码项目: http://www.codeproject.com/KB/dotnet/log4postsharp- intro.aspx 。
Answer 14:
ExceptionLess可用于记录的最简单的NuGet包之一。 它的一个开源项目。 它会自动处理未处理的异常,并选择手动日志可用。 您可以登录网上或自主机本地服务器上。
Answer 15:
log4net的,正如其他人所说,是相当普遍的和类似的Log4j,这将帮助你,如果你做任何Java。
您还可以使用记录应用程序块的选项http://www.codeproject.com/KB/architecture/GetStartedLoggingBlock.aspx
文章来源: Error logging in C#