【知识点】C++的日志框架
常用的 C++ 日志框架
一、日志框架
经过专门设计
的实用程序,用于规范应用程序的日志记录过程,就是日志框架。
日志框架必须通过处理日志记录来标准化解决方案,从而暴露一个标准的 API。
首先要发出要记录的信息。然后格式化这些信息,最后决定将它输出到哪里。
一般情况下,会输出到文件中,但是也可以将其输出到控制台、数据库,或者任何能够接收数据的地方。二、为什么不是 cout
只为成为更好的攻城狮。
也许有人会问:既然 C++ 中有 cout,为什么还要使用日志呢?
使用日志框架是一种很好的实践。即使像《代码整洁之道》这样的书籍,也建议学习像 Log4 这样的框架进行日志记录。
所以,应尽可能的在生产代码中使用日志,而不是用 cout 来打印东西(这是不可接受的)。三、使用日志的好处
日志是一个优秀系统不可或缺的组成部分。
但若有日志的帮助,我们便能迅速摆脱这种困境,可以很快地发现异常,并快速定位、解决问题!
通过记录某些操作所花费的时间,我们可以及时地检测模块的瓶颈,并针对性地对一些耗时操作做出优化。
需要采集和分析用户的行为,而日志无疑是最主要的数据来源。
不要去重新发明轮子 - 《麦肯锡方法》
To be or not to be - that is the question.
请避免重复劳动,不要去重新发明轮子。应该坚持在自己的领域解决问题,将时间花在刀刃上。
话虽如此,但我们还是需要了解关于轮子的一些细节(谁造的?怎么创造的?如何使用?),以从中接受灵感,并把自己的知识加进去。- log4cxx:Java 社区著名的 Log4j 的 C++ 移植版,用于为 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。
- ……
五、日志选择标准
能让你事半功倍。
功能决定当下,性能决定未来。
影响越小,越容易维护。
在以后的使用中,日志将无处不在。就像会影响运行时性能一样,它们也会影响源码的可维护性。每一个成功框架的背后,都有一个伟大的社区。
完整的框架,铸就完美的生产力。
只有前途光明,方能大行其道。
【知识点】C++的日志框架的更多相关文章
- Java最重要的21个技术点和知识点之JAVA集合框架、异常类、IO
(三)Java最重要的21个技术点和知识点之JAVA集合框架.异常类.IO 写这篇文章的目的是想总结一下自己这么多年JAVA培训的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享 ...
- Java 日志框架终极教程
概述 对于现代的 Java 应用程序来说,只要被部署到真实的生产环境,其日志的重要性就是不言而喻的,很难想象没有任何日志记录功能的应用程序被运行于生产环境中.日志 API 所能提供的功能是多种多样的, ...
- 解读ASP.NET 5 & MVC6系列(9):日志框架
框架介绍 在之前的.NET中,微软还没有提供过像样的日志框架,目前能用的一些框架比如Log4Net.NLog.CommonLogging使用起来多多少少都有些费劲,和java的SLF4J根本无法相比. ...
- Java日志框架:SLF4J,Common-Logging,Log4J,Logback说明
Log4j Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等 ...
- java日志框架slf4j与log4j
日志记录自然是非常重要的,但恐怕能记住slf4j与log4j等日志框架配置的人就很少了,这个东西不难,只是配置好后很少会去动它,开发新项目一般也是从其他项目拷贝,或者参照文档 废话不多说,先说log4 ...
- Moon转告给你一个比Log4net更好日志框架--TracerX Logger 及其对应的日志查看器
一.介绍 TracerX logger是一个易于上手,且拥有众多高级特性的.NET日志框架. 它能够发送输出结果到多目的地(循环文件.事件日志等....).它也能生成文本和二进制文件.它拥有一个强大的 ...
- lombok+slf4j+logback SLF4J和Logback日志框架详解
maven 包依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...
- log4net 日志框架的配置
log4net 日志框架的配置——静态文件(一) 添加对log4net程序集的引用 选择程序集文件添加引用即可,需要注意的是需要添加相应程序版本的程序集,如果你的应用是基于.netFramework2 ...
- 日志框架对比 NLog VS Log4net
Log4net 先说Log4net,它是.net平台上一个老牌的日志框架,我接触的时间也不长(因为公司有自己的日志库),但是看着各开源库都在用这个于是前段时间也尝试去了解了一下. 首先让我认识到Log ...
随机推荐
- 保存 yum 下载的软件包并制作成本地 yum 源
保存 yum 下载的软件包并制作成本地 yum 源 实验对象 CentOS 7 yum 安装 nginx (nginx必须使用第三源才能安装:redhat8版本的则不需要,官网源自带nginx软件包) ...
- linux中级之ansible配置(roles)
一.roles介绍 什么情况下用到roles? 假如我们现在有3个被管理主机,第一个要配置成httpd,第二个要配置成php服务器,第三个要配置成MySQL服务器.我们如何来定义playbook? 第 ...
- 遇到问题 DS1302读取数据有问题
读出的数据 错误的原因 是因为 DS1302的初始化函数中 移植的时候 没有改要使能的端口号 但是我的板子用另一个(如下的工程单独下载进板子后可以运行)还是可以用的 原因是 而我那个 读数据全为 ...
- MyBatisPlus详细总结记录
本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com 小 Hub 领读: 一篇写得非常详细的文章,增删改查,各种插件,让你测底熟悉 mybatis plus. 作者:yo ...
- Google Hacking 搜索引擎攻击与防范
Google Hacking,有时也会被称为 Google dorking,是一种利用谷歌搜索的高级使用方式进行信息收集的技术.这个概念最早在2000年由黑客 Johnny Long 提出并推广,一系 ...
- Linux(CentOS7)下安装jdk1.8
Linux(CentOS7) 下安装 jdk1.8 操作过程. 一.检查是否自带jdk rpm -qa|grep java 如果存在则用下面命令删除,xxx yyy zzz代表查询出来的自带jdk名称 ...
- (续篇)Selenium 安装配置以及如何解决('chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/ch)或者(unknown error:cannot find Chrome binary)问题?
注:本帖针对小小白哦~~(づ ̄3 ̄)づ╭- 接pip安装的帖子,不需要的直接跳过... 首先上图,出现如下的错误,那你可是找到知己了: 或者: 抱歉抱歉,这图截的不太清晰,凑合着用吧,但是也能看出来错 ...
- Keil MDK5 安装教程(附安装包百度云)
关注微信公众号"龙行单片机",后台回复"安装包"获取最新安装包百度云链接. 1.MDK5.11a 安装 双击 mdk511a.exe,进行安装.这里我们将其安装 ...
- 错误码:events.js:183 throw er; // Unhandled 'error' event ^ Error: listen EADDRINUSE :::8081
错误的产生: 错误的原因: 端口被占用 修改访问端口就可以了 https://blog.csdn.net/qq_25479327/article/details/79824742
- YOLOv5目标检测源码重磅发布了!
YOLOv5目标检测源码重磅发布了! https://github.com/ultralytics/yolov5 该存储库代表了对未来对象检测方法的超解析开源研究,并结合了在使用之前的YOLO存储库在 ...