Mik*_*ike 8 c# logging log4net
首先,为主观探测标题道歉.这是一个直接的问题.
目前我正在研究一套工具:
目前,Windows服务已经被开发为控制台应用程序(以便于调试/开发),我正在将这些服务转换为服务.在使用这些服务测试了几天后,我发现我想增加日志记录的粒度.我发现我想念Console.WriteLine(),我想为这种类型的输出提供一个替代日志源,如平面文件.这让我想到,"我应该使用框架,还是让我受够了?"
我之所以提到我正在开发的方面的原因是为了解我的情况.已经创建了一个"核心"DLL,在所有组件中都是通用的,从而抽象出应用程序和数据库之间的交互层.在此DLL中,已创建一个类,该类将尝试"登录到数据库中的表",否则将失败"登录到本地事件日志".就是这样,这就是记录的程度.
在上述工具中,有多个日志记录实例与以下内容不同:
Log.LogError("Code", e.Message + "\n" + e.StackTrace);
Run Code Online (Sandbox Code Playgroud)
虽然非常基本,但这种方法确实利用反射来识别错误的来源.
我的问题
看看我目前的日志记录解决方案,就其功能以及如何与我的所有解决方案集成而言,它似乎"足够".但是,我一直在寻找日志框架(特别是log4net),它们的功能让我印象深刻.如果将来需要,能够添加另一种输出格式(例如SMTP服务器)对我来说听起来很酷!:)
我想知道移植到框架(如log4net)的好处?我需要调整代码的程度?我是否只是看着另一边更绿的草?最后,但最重要的是,我做的是正确的吗?我应该只将我的Log类的功能添加到"LogDebug"并完成它吗?我想要做的最后一件事就是彻底检修我的套件,只是为了一个"基本"功能,但如果有其他好处(设计,依赖,良好实践等等)我很感兴趣.
谢谢,
Mit*_*eat 13
是.使用现有的,经过验证的日志记录框架(例如Log4net)是一个好主意.
Log4Net可在运行时配置(非常适合跟踪生产代码中的问题).
正如评论者指出的那样,使用起来也非常简单.
在多个远程系统上运行代码时,正确的日志记录特别有用,据我所知,log4net将允许您将日志发送到远程syslog服务器而没有太多编码开销(这意味着您可以在一个集中位置查看所有计算机的日志)这样做将大大减少您获取与系统中的错误或问题相关的信息所花费的时间,并且还应该告诉您问题的普遍程度.
正如其他帖子中所提到的,log4net还允许多个appender和多个日志级别,因此确定你想要某些日志信息的位置(即在数据库或本地平面文件中,嘿log4net甚至允许你通过telnet吐出日志)是存储是一个绝对的轻而易举.
至于实施它,有几个很好的网站通过设置与您交谈.实际上如何使用log4net为您提供的日志记录对象是一种架构选择,但您可以简单地更改对象的构造函数以获取log4net对象,并且在此对象中,只需使用log4net对象,就像使用Console.WriteLine一样. .
我发现这里的教程系列特别有用,而且它还会比我在这里更深入地了解配置log4net的好处和不同方法.