日志库 EasyLogging++的快速上手
环境:win7 64bit vs2013对话框
语言:c++
相关:easylogging++
easylogging++下载地址:https://github.com/muflihun/easyloggingpp/releases/tag/v9.95.3 (下载.zip那个文件)
一、用法。
1.把.h、.cpp(官网上下载的为.cc,修改为.cpp)移至所需工程目录下。
示例:
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
int main(int argv, const char** argc) {
LOG(INFO) << "Hello, world";
return 0;
}
二、日志类型
日志等级: 一个等级比一个高(这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL)
1.Trace 级别,也许很多人会联想到VC中的宏TRACE,自然而然地以为Trace级别的日志只会在debug版本有效。不过实际验证发现,不论是debug还是release版本,Trace级别的日记都会生效。
2.Debug 级别,只在debug模式生效,在Release模式会自动屏蔽该级别所有的日志记录。
3.Fatal 级别,默认情况下会使程序中断,可设置标记 LoggingFlag::DisableApplicationAbortOnFatalLog 来阻止中断。
示例:
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
int main(int argc, char** argv)
{
/// 防止Fatal级别日志中断程序
el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog);
/// 选择划分级别的日志
el::Loggers::addFlag(el::LoggingFlag::HierarchicalLogging);
/// 设置级别门阀值,修改参数可以控制日志输出
el::Loggers::setLoggingLevel(el::Level::Global);
LOG(TRACE);
LOG(DEBUG);
LOG(FATAL);
LOG(ERROR);
LOG(WARNING);
LOG(INFO);
VLOG(0);
/// Debug模式日志记录
DLOG(TRACE);
DLOG(DEBUG);
DLOG(FATAL);
DLOG(ERROR);
DLOG(WARNING);
DLOG(INFO);
DVLOG(0);
system("pause");
return 0;
}
3.日志滚动
如果把所有的日志都记录在一个文件之中,势必会造成日志文件越来越大。所以,支持日志文件滚动是很多日志库都支持的功能,而文件滚动又可以分为按大小滚动和按时间滚动。
最简单的方法:修改easylogging默认生成的log命名。在其中添加时间项。
步骤1:在easylogging++.h文件中,搜索“myeasylog”,将其替换为“log_%datetime{%Y%M%d}”。只需要替换3项。结果配置文件中最大值的设置可以实现日志按日期且按照设置的最大值进行滚动记录。
步骤2:添加日志文件。
日志命名:my_log.ini
日志文件内容:
* 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
步骤3:添加主要代码
el::Loggers::addFlag(el::LoggingFlag::StrictLogFileSizeCheck); //日志大小设置**开关
el::Configurations conf("my_log.ini");
/// 可以单独设置某一个logger的配置
el::Loggers::reconfigureAllLoggers(el::ConfigurationType::MaxLogFileSize, "1048576"); //设置单位为B
疑问1:如何将日志显示在edit控件中?
答:easylogging的日志是分级别的。edit控件显示的日志需要手动更新显示。建议可以显示Info级别的日志。至于如何循环显示可以参看:http://blog.csdn.net/i_likechard/article/details/76033766
本文学习素材部分取自:http://blog.csdn.net/fish_55_66/article/category/5911481 需要详细了解easylogging的人可以前去学习。