Easyloggingpp的使用
对于有开发经验的程序员来说,记录程序执行日志是一件必不可少的事情。通过查看和分析日志信息,不仅可以有效地帮助我们调试程序,而且当程序正式发布运行之后,更是可以帮助我们快速、准确地定位问题。在现在这个开源的年代,并不需要我们自己去写一套日志库,开源的版本已经有很多了。然而遗憾的是,在目前开源的C++日志库中,并没有一个在使用份额上占绝对优势的,我自己之前用过log4cplus和glog,这两个库都比较成熟了,而且网上教程也很多,所以一直都很喜欢使用这两个日志库。
前段时间,在GitHub上我偶然看到了另外一个开源的C++日志库,当时还只是粗略地研究了一下,结果竟然让我爱不释手,它就是Easylogging++。和log4cplus和glog相比,Easylogging++最大的特点就是它只有一个头文件,并且无需任何外部依赖,我从来没有见过哪一个日志库可以做到如此轻量而且还能兼顾性能的。除此之外,Easylogging++使用起来非常简单,同时还支持文件配置,提供了强大的自定义日志格式的能力,还提供对第三方库,STL容器的支持。面对如此炫酷的开源日志,怎么能不去学习学习!!!
Easylogging++项目在GitHub的开源地址:https://github.com/easylogging/easyloggingpp
功能特征
- 高度可配置
- 速度非常快
- 线程和类型安全
- 跨平台
- 自定义日志模式
- 条件日志和偶然日志
- 性能跟踪
- 详细记录日志
- 中断处理
- 辅助CHECK宏
- STL 日志
- 第三方库日志(比如Qt, boost, wxWidgets)
- 可扩展性
- 支持Debug功能
- 系统日志记录
- perror风格日志
- C++流操作符风格日志
- C 语言printf风格日志
- ……
写这篇文章时,最新的 Easylogging++ 版本是V9.80,如果编译器不支持C++11的话,是无法编译的。对于Visual Studio系列来说,必须是VS2012或以上版本才行。如果还停留在VS2010、VS2008,VS2005的小伙伴,可以考虑使用EasyLogging++ V8.91版本。需要注意的是,不同的版本在使用方法和功能支持上都会有所差异。特别指出,本系列中所有的学习记录,只适用于 Easylogging++ 版本V9.80。另外,在本系列文章中出现的所有演示代码都是在 64Bit Windows 7 系统下使用 Visual Studio 2013 编译测试的。
快速使用
正如前面所说,Easylogging++使用起来非常简单,简单到什么地步呢?下面是GitHub上给出一个示例代码:
- #include "easylogging++.h"
- INITIALIZE_EASYLOGGINGPP
- int main(int argv, char* argc[]) {
- LOG(INFO) << "My first info log using default logger";
- return 0;
- }
示例代码只有短短几行,每行代码的作用也一目了然:
- 包含easylogging++.h头文件
- 使用宏 INITIALIZE_EASYLOGGINGPP 初始化
- 使用宏 LOG(INFO) 开始日志记录
- #include "easylogging++.h"
- INITIALIZE_EASYLOGGINGPP
- int main(int argc, char** argv)
- {
- el::Configurations conf("my_log.conf");
- el::Loggers::reconfigureAllLoggers(conf);
- LOG(TRACE) << "***** trace log *****";
- LOG(DEBUG) << "***** debug log *****";
- LOG(ERROR) << "***** error log *****";
- LOG(WARNING) << "***** warning log *****";
- LOG(INFO) << "***** info log *****";
- system("pause");
- return 0;
- }
- * GLOBAL:
- ENABLED = true
- TO_FILE = true
- TO_STANDARD_OUTPUT = true
- FORMAT = "[%level | %datetime] | %msg"
- FILENAME = "log\\log_%datetime{%Y%M%d}.log"
- MILLISECONDS_WIDTH = 3
- PERFORMANCE_TRACKING = false
- MAX_LOG_FILE_SIZE = 1048576
- LOG_FLUSH_THRESHOLD = 0
- * TRACE:
- FILENAME = "log\\trace_log_%datetime{%Y%M%d}.log"
- * DEBUG:
- FILENAME = "log\\debug_log_%datetime{%Y%M%d}.log"
- * FATAL:
- ENABLED = false
- * ERROR:
- FILENAME = "log\\error_log_%datetime{%Y%M%d}.log"
- * WARNING:
- FILENAME = "log\\warning_log_%datetime{%Y%M%d}.log"
- * INFO:
- FILENAME = "log\\info_log_%datetime{%Y%M%d}.log"
- * VERBOSE:
- ENABLED = false
Easyloggingpp的使用的更多相关文章
- 值得推荐的C/C++框架和库
值得推荐的C/C++框架和库 [本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm]留作存档 下次造轮子前先看 ...
- [转]C/C++ 程序员必须收藏的资源大全
from: https://github.com/jobbole/awesome-cpp-cn C++ 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome – XXX 系列 ...
- [转载]C/C++框架和库
C/C++框架和库 装载自:http://blog.csdn.net/xiaoxiaoyeyaya/article/details/42541419 值得学习的C语言开源项目 Webbench Web ...
- C++ 资源大全
http://www.uml.org.cn/c++/201411145.asp http://ezlippi.com/blog/2014/12/c-open-project.html <C++ ...
- 最全面的 C++ 资源、框架大全
转载自 http://www.codeceo.com/article/cpp-resource-framework.html#0-tsina-1-99850-397232819ff9a47a7b7 ...
- 1.值得推荐的C/C++框架和库 (转)
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...
- C++开源大全
程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard Library:是一系列 ...
- 值得学习的C语言开源项目
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工 ...
- 推荐!国外程序员整理的 C++ 资源大全
http://blog.jobbole.com/78901/ 关于 C++ 框架.库和资源的一些汇总列表,由 fffaraz 发起和维护. 内容包括:标准库.Web应用框架.人工智能.数据库.图片处理 ...
随机推荐
- Sonar理论篇
一.Sonar是什么 Sonar是一个代码质量管理的开源平台,用于管理源代码的质量,通过插件形式,可以支持包括java.C#.JavaScript等二十余种编程语言的代码质量管理与检测. Son ...
- 软工实践第二次作业—Wordcount
Git仓库地址:https://github.com/cwabc/PersonProject-C 一.问题描述 输入一个txt文件名,以命令行参数传入,程序能够统计txt文件中的以下几个指标: 统计文 ...
- java-为什么非静态内部类中不能有static修饰的属性,但却可以有final常量?
- 例: public class Demo{ int x; class A{ static int a = 0; //这样写是不合法的. static final int b=0; //这样写是合法 ...
- 如何运行简单的scrapy
1.建scrapy工程 scrapy startproject python123demo 2.在工程中写一个爬虫文件 cd python123demo scrapy genspider demo p ...
- Write your own Terraform provider: Part 1
转自:https://container-solutions.com/write-terraform-provider-part-1/ This is the first part of a seri ...
- DOS命令之at命令详解
AT命令是Windows XP中内置的命令,它也可以媲美Windows中的“计划任务”,而且在计划的安排.任务的管理.工作事务的处理方面,AT命令具有更强大更神通的功能.AT命令可在指定时间和日期.在 ...
- Python高阶函数_map/reduce/filter函数
本篇将开始介绍python高阶函数map/reduce/filter的用法,更多内容请参考:Python学习指南 map/reduce Python内建了map()和reduce()函数. 如果你读过 ...
- 编写一个函数 reverse_string(char * string)实现:将参数字符串中的字符反向排列 。(递归实现)
要求:不能使用C函数库中的字符串操作函数. 思路:在递归函数的调用时,先应该定义一个指针型char字符串.函数内部应先调用自己,在打印,这样才能保证字符串是从最后一个开始输出. #include< ...
- 3d tech
product Company 3D "smart cameras" such as the Gocator LMI Technologies (Delta, BC Cana ...
- java-网页404(个例)
tomcat正常启动网址404问题 个例情况: 1.选择第二个 2.web.xml配置不对(是因为缺少相应jar包和配置错误,根据控制器显示的错误一步步解决错误,最后OK) 3.构建路径中有错误(更换 ...