日志组件是什么,日志门面和日志框架

何为日志框架日志框架:一个经过专门设计的实用程序,用于规范应用程序的日志记录过程。日志框架可以自己编写(技术要牛才行哦),也可以由第三方(例如:log4cplu

什么是日志框架?

日志框架:专门设计用于标准化应用程序日志记录过程的实用程序。

日志框架可以由您自己编写(这需要很高的技巧)或由第三方提供(例如log4cplus)。每个组织中不同的日志记录框架的实现方式不同。

虽然可以简单地“标准化”日志(例如,通过调用文件系统API 并将信息写入名为log.txt 的文件),但我们需要超越标准化,使其成为严格的框架。这意味着日志记录框架应该通过处理日志记录来标准化解决方案,从而公开标准API。

你不明白吗?更具体地说,让我们想象一个封装了三个主要部分的日志记录框架。

2adf339ccd4f4a07aa22fcbb357f8a87~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717780900&x-signature=9TokoOEdUYKz4ChqwMQJADlpGJs%3D

如果要捕获程序的运行时信息,请首先输出要记录的信息。接下来,格式化您的信息。最后,决定输出目的地。通常,这会输出到文件,但也可以输出到控制台、数据库或任何其他接受数据的位置。

如果您有一组可以解决这些问题的代码,您可以将其视为日志记录框架。

为什么不是 cout

使用原木成为更好的攻城狮。

您可能会问,“为什么C++ 有cout 时还要使用日志记录?”

无可否认,在使用C++、Java 或PHP 等编程语言时,您经常会在开发、测试和调试程序的过程中将消息打印到控制台。但是,如果您正在使用服务器端程序并且看不到其中发生的情况怎么办?您唯一的可视化工具是日志文件。如果没有日志,您就无法调试并了解程序内部发生的情况。

C++ 有一个非常有用的cout 输出流,允许您将信息打印到控制台或以其他方式将此信息重定向到文件,但这对于实际应用程序来说还不够。特别是对于复杂的C++ 程序,日志框架(例如log4cplus 或其他日志框架)提供了比cout 更大的灵活性。

我们建议您在编写代码时使用日志框架。像《代码整洁之道》这样的书也推荐学习像Log4j这样的日志框架。因此,不要使用cout 进行输出(这是不可接受的),而应尽可能在生产代码中使用登录。

使用日志的好处

日志是任何优秀系统的重要组成部分。

对于许多人来说,日志仅用于调试。并非如此,但它在很多方面都非常有用。

日志是最好的诊断工具。大多数人都面临过以下困境:

如果没有日志,您将不得不依靠您的客户或支持团队来告诉您在什么情况下发生了什么(很可能会产生误解)。然后,您必须在开发环境中重现问题并运行各种调试,直到错误得到修复,这通常需要很长时间。但借助日志,你可以快速摆脱这种困境,快速发现异常,快速识别并解决问题。

日志使您有机会检测模块中的瓶颈。随着项目规模的增长,模块数量也随之增加,调优成为一场长期的战斗。

通过记录某些操作的日期和时间,可以及时发现模块瓶颈,有针对性地优化一些耗时的操作。

日志可以帮助您了解用户行为。为了提高产品质量并提供个性化服务,您需要了解用户行为:他们做什么、想要什么。

显然我们需要数据来理解这一点,因此需要收集和分析用户行为,但日志绝对是主要数据源。

要不要重新发明轮子

请停止重复发明轮子—— 《麦肯锡方法》

c068cf56e31346a7b36be76881422d2f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717780900&x-signature=TQ1IjVMpieHJrhCWrLkBhxwJ87E%3D

现在您对日志框架有了清晰的了解,您应该使用现有的日志框架还是构建自己的日志框架?实际上,这是一个常见问题。 —— 我们应该重新发明轮子吗?引用莎士比亚的戏剧《哈姆雷特》:

问题是它是否应该存在。

当前,我们正处于一个技术爆炸的时代,每个技术领域都有很多优秀的解决方案。因此,您不需要也不应该创建日志记录框架。正如我们不应该创建版本控制工具或错误跟踪管理工具一样,其他人已经开发了这些东西并使它们运行得很好:Git、SVN、Bugzilla、Trac 等。它们都可以找到。您可以花很少的钱甚至免费使用它。

因此,避免重复劳动并重新发明轮子。您应该专注于解决您所在领域的问题并明智地利用您的时间。话虽这么说,如果您想从轮子中获得灵感并添加自己的知识,请阅读有关轮子的更多信息(谁制造了它?它是如何制造的?它是如何使用的?)您需要了解。

因此,如果您需要一个日志框架,您应该使用现有的框架,而不是重新发明轮子。那么问题来了,什么是日志框架?

日志框架都有哪些

C++ 有许多日志记录框架,但最流行的一些是:

log4cxx:Log4j 的C++ 移植版本,在Java 社区中众所周知。用于为C++程序提供日志记录功能,以便开发人员调试和审计目标程序。 log4cplus:一种易于使用的C++ 日志记录API,提供对日志管理和配置的线程安全、灵活且任意粒度的控制(也基于Log4j)。 Log4cpp:C++ 库,用于灵活记录到文件、syslog、IDSA 和其他目的地(也基于Log4j)。 google-glog:C++ 语言的应用程序级日志记录框架,提供C++ 风格的流操作和各种辅助宏。 Pantheios:类型安全、高效、通用且可扩展的C++ 日志API 库(被誉为C++ 领域最快的日志库)。 POCO:还提供优秀的日志记录支持文档。 ACE:ACE 还具有日志记录支持。 Boost.Log:设计为高度模块化和可扩展。 Easylogging++:一个轻量级、高性能的C++日志库(只有一个头文件)。 G3log:一个开源跨平台异步C++日志框架,支持自定义日志格式。它基于g2log 构建,提高了性能并支持自定义格式。 Plog:一个可移植、简单且可扩展的C++ 日志库。 spdlog:快速C++ 日志库,仅标头,C++11 兼容。 ……

市面上有这么多框架,您应该选择哪一个呢?

很难直接回答这个问题,因为每个人的需求和技术堆栈都不同,但有一些选择标准需要考虑。

日志选择标准

易于使用易于使用的框架,让您事半功倍。

易用性是一个好的框架的关键特征。因此,无论您使用什么框架,这都应该是您的首要任务。

一旦选择,日志框架将在整个开发过程中被项目团队中的每个人频繁使用。如果不好用那就最糟糕了!因此,在选择日志框架时,尽量寻找使用简单直观的API实现的解决方案。一个简单的日志框架,允许您参考测量标准。如果您是经验不足的团队成员,那么在查看文档和简单示例后,您应该能够快速入门。

绩效(效率)能力决定现在,绩效决定未来。

另一个需要考虑的重要因素是性能影响。如上所述,您将频繁调用日志记录,这会对程序的性能产生很大影响。

想象一下一个日志框架需要很长时间才能启动,每次调用都会执行阻塞文件I/O,并且缺乏缓冲机制。你会使用这样的框架吗?

因此,在评估一个日志框架时,可以参考网上的一些文章进行比较,或者自己做一些对比实验(基准测试)。例如: 吞吐量—— 衡量每秒可以完成的方法调用数量(越高越好);示例—— 衡量每次调用执行所需的时间(越低越好)。

对现有代码的影响越小,就越容易维护。

为了将来的使用,日志将无处不在。正如它会影响运行时性能一样,它也会影响源代码的可维护性。

从应用程序的角度来看,日志记录处于一个尴尬的境地。我们这样说是因为我们在编程时牢记单一职责原则,尽最大努力隔离依赖关系,提供良好的接口,并最大限度地减少耦合。然后你会看到日志,但它们遍布各处,与周围的代码无关。与这些良好的设计原则相比,日志记录似乎有些矛盾。

社区支持每个成功的框架背后都有一个伟大的社区。

框架的生命力来自于不断的完善和发展。如果没有强大的社区支持,框架就会失去力量的源泉。

因此,这一点在选择框架时非常重要。 —— 您选择的框架是否有专门的团队支持?它在Stack Overflow 等问答网站上有很强的影响力吗?如果您在使用它时遇到任何问题,请确保有快速的方法来解决它。选择未知的框架可能会导致浪费大量时间来解决出现的错误。

完整性和完美的框架创造完美的生产力。

首先,我们将日志记录功能分为三个主要部分:日志记录、格式化和输出。因此,请确保您选择的日志框架能够完全解决这些问题。

日志和输出是比较基础的,几乎所有日志框架都有这些概念。话虽这么说,一个好的框架应该很好地分离日志记录和输出,以及多个可选的输出位置。理想情况下,最好自定义输出位置。

格式化的日志文件通常排列良好并且非常易于阅读。但在DevOps 的世界里,这还不够。具体来说,您需要将日志文件格式化为可以解析的数据。通过将输出日志处理为数据,您可以轻松聚合、搜索和可视化日志,这对于生产支持非常有用。因此,请确保您的日志框架具有此功能。

只有有光明的未来,发展才能成功。

这是没有办法解决的。 —— 在选择日志框架时,不仅要考虑目前的情况,还要关注其发展前景。

与上面提到的C++ 日志框架一样,每个框架都很好并且具有独特的功能。然而,有些正在获得更多关注,例如log4cplus 和glog。这是为什么呢?他们有非常强大的“基因”和“后端”,一个是著名的Log4j的衍生品,另一个是Google的“儿子”。

框架的发展前景取决于许多因素,包括其受欢迎程度、用户基础和社区活动。如果你想受欢迎,这些几乎是必不可少的。

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/83794.html

(0)
小条的头像小条
上一篇 2024年6月1日 上午1:09
下一篇 2024年6月1日 上午1:21

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注