logging - "Reliable"日志究竟是什么?

标签 logging enterprise-library

所以,前几天我正在和一个人谈论企业库日志记录应用程序块和 log4net。

我注意到的一点是 log4net 声称:
log4net is not reliable. It is a best-effort and fail-stop logging system.

令人惊讶的是,我试图找出企业库日志记录是否“可靠”。这就是我能找到的词 "reliable"被明确使用。 (注意是2004版的)

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

谢谢。

最佳答案

大多数日志库,例如 log4net 和 Enterprise Library,选择吞下可能在日志记录过程中抛出的异常,以防止应用程序停止。因此,这些库不能称为“可靠”(根据 log4net 文档)。

在我看来,未能记录事件是一个严重的失败,不应该被掩盖。丢失的日志消息可能会被黑客滥用以隐藏他们的踪迹,或者至少它会使找到问题的根本原因变得更加困难。

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

关于logging - "Reliable"日志究竟是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3430894/

相关文章:

.net - 企业库 xml

c# - 让 log4net 使用应用程序配置文件来获取配置数据

java - 如何记录堆栈跟踪 aws elastic beanstalk 以快速解决客户错误

c# - 我应该在带有 Unity 容器的控制台应用程序中的何处注册解析我的类型?

asp.net - 如何处理多次重新抛出和记录的异常

.net - 如何让企业库配置和项目设置设计器在app.config中引用相同的值

nhibernate - 在 NHibernate 中使用 Enterprise Library 日志记录应用程序 block

java - 传递性 log4j2 依赖 - 配置失败

grails - Grails无法使用自定义附加程序将消息打印到日志文件

java - 日志记录不适用于 Spring boot 2.1.1 和 JDK 11 升级