easylogging++日志库使用手册
admin
2024-05-11 21:10:34
0

Easylogging++是通过源码文件来集成的跨平台日志库,使用起来非常方便,优点是使用方便,速度快,线程安全,可配置。EasyLogging++日志库只有两个文件,一个头文件一个代码文件拷贝到项目工程中就可以使用。

Easylogging++的项目地址如下所示:
https://github.com/amrayn/easyloggingpp
项目库只有两个文件分别为easylogging++.h和easylogging++.cc

配置Easylogging++

将库文件拷贝到项目中之后我们就可以使用easylogging++库了,在使用库之前我们需要对库进行配置,配置方式支持代码配置和配置文件配置下面分别介绍两种配置方法的使用。

代码配置

#include "easylogging++.h"
//初始化日志库
INITIALIZE_EASYLOGGINGPP
//通过定义宏启动线程安全配置
#define ELPP_THREAD_SAFE
static void ConfigEasyLogging()
{el::Configurations conf;// 启用日志conf.setGlobally(el::ConfigurationType::Enabled, "true");//设置日志文件目录以及文件名conf.setGlobally(el::ConfigurationType::Filename, "log\\log_%datetime{%Y%M%d %H%m%s}.log");//设置日志文件最大文件大小conf.setGlobally(el::ConfigurationType::MaxLogFileSize, "1920000");//是否写入文件conf.setGlobally(el::ConfigurationType::ToFile, "true");//是否输出控制台conf.setGlobally(el::ConfigurationType::ToStandardOutput, "true");//设置日志输出格式conf.setGlobally(el::ConfigurationType::Format, "[%datetime] [%loc] [%level] : %msg");//设置日志文件写入周期,每10条刷新到输出流中conf.setGlobally(el::ConfigurationType::LogFlushThreshold, "10");//加载配置el::Loggers::reconfigureAllLoggers(conf);
}

日志格式支持如下的配置:

%logger	        日志ID
%thread	        线程ID
%thread_name	线程名称
%level	        日志级别
%levshort	    日志级别 缩写显示
%vlevel	        详细日志级别
%datetime	    日志时间
%user	        当前用户
%host	        当前的主机名称
%file*	        输出日志的源码文件的名称
%fbase*	        不包含源码文件扩展名的文件名
%line*	        代码的行号
%func*	        函数名称
%loc*	        文件名称和行号
%msg	        日志消息
%	            转义特殊字符

时间格式

%d	日格式(01~31)
%a	周几英文简写(Mon, Tue, Wed, Thu, Fri, Sat, Sun)
%A	周几英文全拼(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
%M	月份(01~12)
%b	月份简拼(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)
%B	月份全拼(January, February, March, April, May, June, July, August, September, October, November, December)
%y	两位的年份(13, 14 etc)
%Y	四位的年份(2013, 2014 etc)
%h	小时 (12-hour format)
%H	小时 (24-hour format)
%m	分钟 (zero-padded)
%s	秒钟 (zero-padded)
%F	AM/PM 设置

配置文件配置

除了使用代码来进行配置之外,我们还可以通过配置文件来进行配置,配置文件的格式如下所示:
config.conf

* GLOBAL:FORMAT                  =   "[%datetime] | [%level] | %msg"FILENAME                =   "log/log_%datetime{%Y%M%d}.log"ENABLED                 =   trueTO_FILE                 =   trueTO_STANDARD_OUTPUT      =   falseSUBSECOND_PRECISION     =   3PERFORMANCE_TRACKING    =   falseMAX_LOG_FILE_SIZE       =   209715200 ## Throw log files away after 2097152 2MB / 209715200 200MB / 4398046511104 1GBLOG_FLUSH_THRESHOLD     =   0
* INFO:FILENAME                =   "log/info_%datetime{%Y%M%d}.log"
* VERBOSE:FORMAT                  =   "[%datetime] | [%level-%vlevel] | %msg"
* WARNING:FILENAME                =   "log/warn_%datetime{%Y%M%d}.log"TO_STANDARD_OUTPUT      =   true
* ERROR:FILENAME                =   "log/error_%datetime{%Y%M%d}.log"TO_STANDARD_OUTPUT      =   true
* FATAL:FILENAME                =   "log/fatal_%datetime{%Y%M%d}.log"TO_STANDARD_OUTPUT      =   true
* DEBUG:FILENAME                =   "log/debug_%datetime{%Y%M%d}.log"
##    ENABLED                 =   false
* TRACE:
##    FILENAME                =   "log/trace_%datetime{%Y%M%d}.log"FORMAT                  =   "[%datetime] | [%level] %loc %func | %msg"
##    ENABLED                 =   false

配置文件放在对应的目录下,在使用的时候通过加载生效,加载方式如下

#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
//通过定义宏启动线程安全配置
#define ELPP_THREAD_SAFE
int main(int argc, char *argv[])
{//加载配置文件并生效el::Configurations conf("config.conf");el::Loggers::reconfigureAllLoggers(conf);//致命错误不关闭程序el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog);
}

日志库的使用

加载完毕日志库之后,我们就可以使用对应的日志库了,日志库的使用方法示例如下所示:

#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
#define ELPP_THREAD_SAFE
int main(int argc, char *argv[])
{//配置日志库el::Configurations conf("configlog.conf");el::Loggers::reconfigureAllLoggers(conf);el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog);//设置日志输出级别el::Loggers::setLoggingLevel(el::Level::Trace);//设置详细级别就是通过数字大小来区分日志级别el::Loggers::setVerboseLevel(9);int verboseLevel = el::Loggers::verboseLevel();LOG(INFO) << "Verbose Level = " << verboseLevel;LOG(INFO) << "this is info log";LOG(WARNING) << "this is waring log";LOG(ERROR) << "this is error log";LOG(FATAL) << "this is fatal log";LOG(DEBUG) << "this is debug log";LOG(TRACE) << "this is trace log";VLOG(0) << "this is level 0 log";VLOG(1) << "this is level 1 log";return a.exec();
}

相关内容

热门资讯

金属3D打印火箭厂商Rocke... 长三角G60激光联盟导读:国外的金属3D打印火箭厂商Rocket Lab,发展速度之快就像坐上了火箭...
嘴歪眼斜是什么病前兆 嘴歪眼斜一般情况下是面瘫、脑卒中、脑梗死等疾病的前兆。 1、面瘫:通常是因为感染因素,也有可能是因为...
上海建工:获政府补助3.48亿... 根据《企业会计准则第16号——政府补助》相关规定,公司将上述与收益相关的政府补助确定为“其他收益”并...
李彦宏最大IPO来了 窗口期。 作者/吴琼 报道/投资界PEdaily “份额抢不到。” 这一幕正在出现在昆仑芯身上。自年...
万全区召开传统制造业数字化升级... 来源:厚德万全 7月3日,万全区召开传统制造业数字化升级与电子商务发展座谈会。区政协、区商务局、...
原创 德... 在全球经济的复杂棋局中,近期德国总理默茨对人民币汇率的言论引发了不小的波澜。他声称人民币“低估了30...
煤科先锋丨从戈壁“小白”到攻坚... (来源:中国煤炭科工集团) 2022年初夏,刚入职不到半年的田凤亮,第一次踏上新疆戈壁深处的露天矿。...
海归博士回国创业,一年狂飙4倍... 文 | 硅基象限,作者 | 张思 一个50后海归博士,扎进全球仅剩三个玩家的“冷门”芯片赛道,做到...
3个月融资35亿,清华90后博... 极佳视界创始人 黄冠 作者 | 邱鑫浩 来源 | 邱处机 投资人正在押注物理AI的到来。 据《投资界...
12亿天价豪宅成交,又一个神秘... 文丨金融八卦女 月月 卖豪宅“续命”的大佬,又多了一个。 近日,香港地产圈诞生了2026年以来最贵...
今夜,欧美全线拉升!黄金白银,... 【导读】平静的一晚 中国基金报记者 泰勒 大家好啊,今晚美股休假,一起简单看看海外市场的表现吧。 7...
上半年880只新基成立创历史新... 财联社7月4日讯(记者 封其娟)2026 年上半年的公募发行市场,呈现出一幅“分裂式繁荣”的图景。 ...
“摘星脱帽”后连收两个涨停 金... 本报记者 冯雨瑶 7月3日,金科地产集团股份有限公司(以下简称“金科股份”)股价开盘后再度涨停,这是...
三重需求叠加,国产半导体设备企... 记者 郑晨烨 最近几个交易日,股票市场上近期涨势迅猛的科技股群体出现了快速回调。但在产业层面,202...
颈肩腰腿疼得扛不住?博康诊所贾... 现代保健报讯:朔州入了夏,白天热辣辣的,屋里空调一开,冷热交替间,不少人的颈肩腰腿又开始闹别扭了。鄯...
一张“小桌子”何以撬动大消费?... (来源:上海普陀) “太开心了!我是从常州特地来的,一年一次的展会,当然要过来感受一下!”上午10时...
2026四川行|从“四川行”看... 2026中外知名企业四川行投资推介会举行期间,四川重磅推出1.8万亿元投资机会,精选180个重点项目...
每周股票复盘:平安银行(000... 截至2026年7月3日收盘,平安银行(000001)报收于10.29元,较上周的10.23元上涨0....
电商爆款仪器怎么玩?公模现货在... 电商爆款仪器的核心竞争力不是重金投入外观私模,而是极致的供应链测款速度。数据显示,能在5天内完成现货...
起步价2000万的杭州豪宅成交... 界面新闻记者 | 杨冰柯 界面新闻编辑 | 庄键 上半年杭州新房成交2.62万套,总价2000万...