[C++]EasyLogging++使用
本文使用环境
系统:windows11
环境:vs2010
EasyLogging++功能介绍
Easylogging+ +是用于C+ +应用程序的单头高效日志库。它非常强大、高度可扩展并且可根据用户的要求进行配置。它提供了编写您自己的接收器的能力(通过称为 的特色功能LogDispatchCallback)。该库目前被 github和其他开源源代码控制管理网站上的数百个开源项目使用。
下载
8.91 该版本最高支持vs2010。
最新 最低支持vs2012
使用
不同版本可能写法稍有出入,请查看官网文档。
- 下载后放入项目的include目录中
- 初始化
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
int main(int argc, char* argv[]) {
LOG(INFO) << "My first info log using default logger";
return 0;
}
- 文件配置日志
* GLOBAL:
FORMAT = "%datetime %msg"
FILENAME = "/tmp/logs/my.log"
ENABLED = true
TO_FILE = true
TO_STANDARD_OUTPUT = true
SUBSECOND_PRECISION = 6
PERFORMANCE_TRACKING = true
MAX_LOG_FILE_SIZE = 2097152 ## 2MB - Comment starts with two hashes (##)
LOG_FLUSH_THRESHOLD = 100 ## Flush after every 100 logs
* DEBUG:
FORMAT = "%datetime{%d/%M} %func %msg"
加载配置
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
int main(int argc, const char** argv) {
// Load configuration from file
el::Configurations conf("xxx.conf");
// Reconfigure single logger
el::Loggers::reconfigureLogger("default", conf);
// Actually reconfigure all loggers instead
el::Loggers::reconfigureAllLoggers(conf);
// Now all the loggers will use configuration from file
}
- 代码配置日志
#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP
int main(int argc, const char** argv) {
el::Configurations defaultConf;
defaultConf.setToDefault();
// Values are always std::string
defaultConf.set(el::Level::Info,
el::ConfigurationType::Format, "%datetime %level %msg");
// default logger uses default configurations
el::Loggers::reconfigureLogger("default", defaultConf);
LOG(INFO) << "Log using default file";
// To set GLOBAL configurations you may use
defaultConf.setGlobally(
el::ConfigurationType::Format, "%date %msg");
el::Loggers::reconfigureLogger("default", defaultConf);
return 0;
}
- 配置说明
配置名称 | 类型 | 描述 |
---|---|---|
Enabled | bool | 确定是否启用记录器的相应级别 |
To_File | bool | 是否将相应的日志写入日志文件 |
To_Standard_Output | bool | 是否将日志写入标准输出,例如终端或命令提示符 |
Format | char* | 确定相应级别和记录器的日志记录格式/模式。 |
Filename | char* | 确定将日志写入相应级别和记录器的日志文件(完整路径) |
Subsecond_Precision | uint | 指定亚秒精度(以前称为“毫秒宽度”)。宽度可以在范围 (1-6) 内 |
Performance_Tracking | bool | 确定是否启用性能跟踪。这不取决于记录器或级别。除非指定,否则性能跟踪始终使用“性能”记录器 |
Max_Log_File_Size | size_t | 如果相应级别的日志文件大小 >= 指定大小,日志文件将被截断。 |
Log_Flush_Threshold | size_t | 指定在刷新挂起的日志数据之前要保留的日志条目数 |
官方文档说明比较详细,这边不做搬运工,可以参照下载地址的文档说明
- 简单使用
这里只包含普通记录和条件记录,官方还有更多功能。
- LOG(LEVEL)
- CLOG(LEVEL, logger ID)
- LOG_IF(condition, LEVEL)
- CLOG_IF(condition, LEVEL, logger ID)
LOG(INFO) << "This is info log";
CLOG(ERROR, "performance") << "This is info log using performance logger";
LOG_IF(condition, INFO) << "Logged if condition is true";
LOG_IF(false, WARNING) << "Never logged";
CLOG_IF(true, INFO, "performance") << "Always logged (performance logger)"