所以,前几天我和一个人谈论企业库日志应用程序块和log4net。
我注意到的是log4net声称: log4net is not reliable. It is a best-effort and fail-stop logging system.
令人惊讶的是,我试图找出企业库日志记录是否“可靠”。这是我可以找到明确使用单词"reliable"的地方。 (请注意,它来自2004版)
所以,这让我很好奇,究竟什么是“可靠的”伐木?如果有人知道Enterprise Library Logging应用程序块是否可靠(在当前版本中),请他们指出一些明确说明这一点的文档吗?
感谢。
答案 0 :(得分:1)
我认为“可靠”意味着一旦发送了一条消息,就可以保证将消息传递或物理写入终端设备。
答案 1 :(得分:1)
大多数日志库(例如log4net和Enterprise Library)选择吞下可能在日志记录过程中抛出的异常,以防止应用程序停止。因此,这些库不能称为“可靠”(根据log4net文档)。
在我看来,未能记录事件是一个严重的失败,不应该被扫地。黑客可能会滥用缺少的日志消息来隐藏他们的踪迹,或者至少是因为它更难以找到问题的根本原因。
对我而言,这是构建名为CuttingEdge.Logging的日志记录库的原因之一。 CuttingEdge.Logging中的日志记录提供程序将始终在无法记录事件时抛出异常。通过为某个记录器配置“回退提供程序”,用户可以防止异常冒泡调用堆栈,并让回退提供程序记录原始消息和失败的记录器抛出的异常。后备提供程序本身也可以配置回退提供程序。此机制使得在使用CuttingEdge.Logging时不会记录异常。
答案 2 :(得分:0)
从它的外观来看,“可靠”意味着消息总是被记录下来。 log4net显然试图进行日志记录,但如果不能,它就会失败并让应用程序继续运行。