[C++]EasyLogging++使用

2024 年 4 月 17 日 星期三(已编辑)
/ ,
6
这篇文章上次修改于 2024 年 4 月 17 日 星期三,可能部分内容已经不适用,如有疑问可询问作者。

[C++]EasyLogging++使用

本文使用环境

系统:windows11
环境:vs2010

EasyLogging++功能介绍

Easylogging+ +是用于C+ +应用程序的单头高效日志库。它非常强大、高度可扩展并且可根据用户的要求进行配置。它提供了编写您自己的接收器的能力(通过称为 的特色功能LogDispatchCallback)。该库目前被 github和其他开源源代码控制管理网站上的数百个开源项目使用。

下载

8.91 该版本最高支持vs2010。
最新 最低支持vs2012

使用

不同版本可能写法稍有出入,请查看官网文档。

  1. 下载后放入项目的include目录中
  2. 初始化
#include "easylogging++.h"

INITIALIZE_EASYLOGGINGPP

int main(int argc, char* argv[]) {
   LOG(INFO) << "My first info log using default logger";
   return 0;
}
  1. 文件配置日志
* 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
}
  1. 代码配置日志
#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;
}
  1. 配置说明
配置名称类型描述
Enabledbool确定是否启用记录器的相应级别
To_Filebool是否将相应的日志写入日志文件
To_Standard_Outputbool是否将日志写入标准输出,例如终端或命令提示符
Formatchar*确定相应级别和记录器的日志记录格式/模式。
Filenamechar*确定将日志写入相应级别和记录器的日志文件(完整路径)
Subsecond_Precisionuint指定亚秒精度(以前称为“毫秒宽度”)。宽度可以在范围 (1-6) 内
Performance_Trackingbool确定是否启用性能跟踪。这不取决于记录器或级别。除非指定,否则性能跟踪始终使用“性能”记录器
Max_Log_File_Sizesize_t如果相应级别的日志文件大小 >= 指定大小,日志文件将被截断。
Log_Flush_Thresholdsize_t指定在刷新挂起的日志数据之前要保留的日志条目数

官方文档说明比较详细,这边不做搬运工,可以参照下载地址的文档说明

  1. 简单使用

这里只包含普通记录和条件记录,官方还有更多功能。

  • 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)"
  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...