首先,抱歉主观的冠冕堂皇的标题。这是旨在作为一个直接的问题。

现在我工作的一套工具:

  • C#Windows服务,主要是 维持一个Oracle数据库。
  • C#Windows服务,(这将是 使用多个节点的网站)来 处理内容的数据库。
  • 一个ASP.NET 网络界面 便于管理的整体 "系统"

目前的寿Windows服务已经发展成为控制台应用程序(为了便于调试/发展)和我的中间的转换,这些服务。测试后几天,现在这些服务,我发现,我谨提高度的我的记录。我发现我错过控制台。例如,()我想提供一个替代日志源喜欢一个平面文件,用于这种类型的输出。这已经导致我想,"我应该用一个框架,或者我有足够?"

其原因我已经提到的方面我正在开发是提供洞察我的情况。一个"核心"DLL已经建立,共同在所有部件,抽象层之间的相互作用的应用程序和数据库。正是在这DLL类已经创建,这将试图"记录表数据库中的"其他失败的"记录到当地的事件日志"。这是它,就是这种程度的记录。

在整个上述工具,有多个实例的记录没有什么不同:

Log.LogError("Code", e.Message + "\n" + e.StackTrace);

虽然很基本,这种方法并利用反射标识的来源这一错误。

我的问题

看着我的当前日志记录解决方案,它显示"充足"的条款做什么以及它是如何综合我所有的解决方案。然而,我已经看过日志框架(尤其是log4net)及其功能打动了我。能力,如果需要在未来,加入另一个输出格式(例如SMTP server)听起来蛮酷的,我的!:)

我想知道的好处移动的框架(如log4net)?范围是多少,我将必须适应我的代码?是否我只是看着绿色的草地上的另一边?最后,但也许最重要的是,我在做正确的事?我应该只需增加的能力,我的日志类"LogDebug",并能用它做什么?最后一件事我想做的就是彻底大修,我的套房,只是为了一个"基本"要素,但如果还有其他好处(设计、依赖、良好做法?等等)。 我很感兴趣。

谢谢,

有帮助吗?

解决方案

适当的记录是尤其有益的,当运行代码在多个远程系统,因为据我回想一下,log4net会让你发送你的记录来的一个远程系统日志服务器没有太多的编码的开销(这意味着你可以查看你的记录所有机器中的一个集中的地方),这样做会大量减少所需的时间你得到的信息有关的一个错误或问题的系统,并应该也给你的指示如何普遍的问题。

中提到的其他员额log4net还允许多个附加程序和多次登录的水平,因此确定你想要的某些日志的信息(即在一个数据库或在当地的一个平面文件,嘿log4net甚至可以让你吐日志着telnet)被储存是一个绝对不费吹灰之力.

为实现,有几个很好的网站说你通过设置。你如何实际使用的记录对象log4net给你的是一个建筑的选择,但你可以简单地变化构造的对象采取的一log4net物和从这个目的,只是使用log4net对象为你能控制台。有.

我找到系列教程 在这里, 特别有用,它还将在更深入于我可以在这里的好处和不同的方式配置log4net.

其他提示

是的。使用现有的、经证实的记录框架(例如Log4net)是一个好主意。

Log4Net是配置在运行时(伟大的,用于跟踪问题,在生产编码)。

正如一位评论者所指出的,它也是非常简单的使用。

是的,你一定要使用一种日志框架。一种日志框架将允许您:

  • 设置记录水平,对不同记录的实例。
  • 集的"附加程序"或输出,用于每种不同记录的实例。

也许,更重要的是,如果使用一种日志框架,这是非常容易掉出来的一个执行日志框架的另一个(或许是一个空的实施,简单地抛弃物信息);然而,如果你写出你所有的记录的发言,直接交换的实施将是一场噩梦。

我觉得你应该使用Log4net,仅仅是因为它总是更好地重用于建立你自己的事情。log4net已经使用了很多的开发人员和相当成熟。

想想你的维护的前景;一个或两个月的道路,可能需要调整你自定义的日志类的一点,添加一些多线程的支持等。当你固定的错误出现了,从你的记录类的,你会错过Log4net.

以及一个更大的好处没有保持代码你自己。大部分时间,记录的框架有更多的功能比你自己的解决方案。因为他们太专注于记录,这些框架通常是相当完成在这两个功能性和方式来实现它。然后有可靠性;没有什么比一个记录框架,它不记录任何东西,因为它的窃听。;)

举个例子 ELMAH 对于ASP.net 应用程序。它还包括通知、出口到各种目标格式,等等。事情是很方便的,但你永远不会建立自己的除非你真的需要它。

有多少改变你的代码需要显然取决于你的码和框架的选择。这很难说什么。

我要给喊出来时间复杂(http://nlog-project.org/home),因为它不会遭受'直Java口-然后改写'综合症的大多数开放源码软件。净库。

一些关键的利益对于我们是非常快的记录。IsFooEnabled(挥发性读)和总体业绩的系统。

每个自然的,但我个人喜欢时间复杂我的项目(和一些我的客户也是如此)。

干杯, 弗洛里安

使用一个良好记录的框架喜欢Log4Net是,他们有一个小影响你的代码方面的行代码,你已经改变(在其它的话,你只需要改变每个现有记录线)。

还有,如果你关心改变你的代码如果你改变框架,或者如果你觉得你想滚你自己,然后你总能创建自己的接口 一个 记录框架。然后你只不过必须改变你的代码在一个地方在那之后。

我认为系统管理员期望的服务的日志的应用程序的事件日志在窗。

看看系统。诊断。事件日志,虽然log4net会写信给那太..

最初的声明 log4j网站 可能会帮助你的一些问题,这些问题的基本原则是相同的log4net:

与log4j它是可以启用 记录在运行时无需修改 用二进制的。Log4j 包装的设计,使这些 发言可以保持在运码 不会招致了沉重的性能 成本。伐木行为可以 控制由编辑配置 文件的,而不触及应用程序 二进制的。

使用记录仪层次就是 可能的控制的日志 报表出随意 细粒度,但也有很大的方便。这有助于减小体积的记录 输出和尽量减少成本 记录。

在这种情况下,有明显没有必要重新发明车轮。大多数登录的框架是较简单的,因此延伸的变化很可能将依赖于你的大小现有的程序。

如果你写出你的记录器类得当,它会很容易地消耗性财产的任何你需求。任何框架能给你留下深刻的印象具有许多功能,但另一框架是另一个变量在你的调试进程,因为它可以给你一个错误,不存在或可以做出一个错误的通过本身的组合应用程序。如果你是准备做测试测试开放源码软件项目,这是好的...

在你的地方我会写日志类的能力,延长它的功能,你找到有趣的基于项目的清单上的特点已知的框架。我没有看到任何问题,登录的东西要文件,然后发送smpt,只是一个小的功能做这项工作。

而且,你可以写你自己的类,这将是非常抽象的,把你的基本码在那里,如果你将永远需要用外部框架进行测试你的类将能够使用它的影响最小的代码。只要看一看如何有框架是实现上码的水平。

想想你会需要了解如何正确使用这些框架时你只需要现在就要登录非常小的一部分...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top