2010-08-07 46 views
4

所以,我前几天正在和一个关于企业库日志应用程序块和log4net的人谈话。“可靠”记录究竟是什么?

东西我注意到的是log4net的主张: log4net is not reliable. It is a best-effort and fail-stop logging system.

出人意料的是,我试图找出如果企业库记录是“可靠的”。这是我能找到的词"reliable"明确使用的地方。 (注意它是从2004年版本开始的)

所以,这让我好奇,什么是“可靠”的日志?如果有人知道企业库日志记录应用程序块是否可靠(在当前版本中),他们能否请我指出一些明确说明这一点的文档?

谢谢。

+0

它可能取自log4j faq:http://logging.apache.org/log4j/1.2/faq.html#a1.2 – SiggyF 2010-08-07 15:27:45

回答

1

大多数日志记录库(如log4net和Enterprise Library)都选择吞服日志记录过程中可能引发的异常,以防止应用程序停止。正因为如此,这些库不能称为'可靠'(根据log4net文档)。

在我看来,未能记录一个事件是一个严重的失败,不应该在地毯下扫荡。缺少日志消息可能会被黑客滥用以隐藏自己的踪迹,或者至少会导致发现问题的根源更加困难。

对我来说,这是构建一个名为CuttingEdge.Logging的日志库的原因之一。在无法记录事件时,CuttingEdge.Logging中的日志记录提供程序将始终引发异常。通过为特定的记录器配置'fallback provider',用户可以防止异常冒泡调用堆栈,并让fallback提供程序记录原始消息和由失败记录器抛出的异常。回退提供程序本身也可以配置回退提供程序。此机制使得使用CuttingEdge.Logging时不会记录异常情况的可能性很小。

1

我认为“可靠”意味着一旦发送了消息,就保证将消息发送或物理写入终端设备。

0

从它的外观来看,“可靠”意味着信息总是被记录下来。 log4net显然试图做日志记录,但如果它不能,它会失败并让应用继续前进。

+0

是的,这正是我的想法。这让我很好奇什么样的日志框架真的是“可靠的”。我的假设是,为了使它真正可靠,它不能只是一个框架,它必须要大得多。 – Adam 2010-08-07 20:05:57