当前位置: 首页 > backend >正文

Easylogging使用笔记

Easylogging++ 是一个功能强大的 C++ 日志库。以下是使用 Easylogging++ 的基本步骤和一些常用操作:

  1. 初始化和开启:

首先,在你的主 .cpp 文件中(通常是包含 main() 函数的文件)添加以下代码:

#include "easylogging++.h"
INITIALIZE_EASYLOGGINGPP

这个宏必须在全局范围内使用,且只能使用一次。

  1. 基本使用:

在需要记录日志的地方,使用以下语法:

LOG(INFO) << "This is an info log";
LOG(WARNING) << "This is a warning";
LOG(ERROR) << "This is an error";
  1. 配置日志:

你可以通过配置文件或代码来配置 Easylogging++。以下是一个简单的代码配置示例:

el::Configurations conf;
conf.setToDefault();
conf.set(el::Level::Info, el::ConfigurationType::Format, "%datetime %level %msg");
el::Loggers::reconfigureAllLoggers(conf);
  1. 开启和关闭特定级别的日志:
// 关闭 INFO 级别的日志
el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog);
el::Configurations conf;
conf.set(el::Level::Info, el::ConfigurationType::Enabled, "false");
el::Loggers::reconfigureAllLoggers(conf);// 重新开启 INFO 级别的日志
conf.set(el::Level::Info, el::ConfigurationType::Enabled, "true");
el::Loggers::reconfigureAllLoggers(conf);
  1. 使用自定义日志器:
el::Logger* customLogger = el::Loggers::getLogger("CustomLogger");
customLogger->info("This is a custom logger message");
  1. 输出到文件:
conf.set(el::Level::Global, el::ConfigurationType::Filename, "logs/myeasylog.log");
el::Loggers::reconfigureAllLoggers(conf);
  1. 禁用所有日志:
el::Loggers::addFlag(el::LoggingFlag::DisableApplicationAbortOnFatalLog);
el::Configurations conf;
conf.setToDefault();
conf.set(el::Level::Global, el::ConfigurationType::Enabled, "false");
el::Loggers::reconfigureAllLoggers(conf);
  1. 重新启用所有日志:
conf.set(el::Level::Global, el::ConfigurationType::Enabled, "true");
el::Loggers::reconfigureAllLoggers(conf);
  1. 使用性能跟踪:
TIMED_SCOPE(timerBlkObj, "My Timer");
// 你的代码
// 计时器会在作用域结束时自动记录耗时
  1. 线程安全:

Easylogging++ 默认是线程安全的。如果你不需要线程安全(为了提高性能),可以在编译时定义 ELPP_NO_DEFAULT_LOG_FILE

记住,在使用 Easylogging++ 时,你需要在项目中包含 easylogging++.heasylogging++.cc 文件。

这些是 Easylogging++ 的基本用法。该库还提供了许多高级功能,如条件日志、自定义格式化、性能跟踪等。你可以查阅 Easylogging++ 的官方文档以获取更详细的信息和高级用法。

http://www.xdnf.cn/news/7642.html

相关文章:

  • 【开源】一个基于 Vue3 和 Electron 开发的第三方网易云音乐客户端,具有与官方客户端相似的界面布局
  • pom.xml中的runtime
  • 关于汇编语言与接口技术——单片机串行口的学习心得
  • thread 的mutex优化
  • 基于FFT变换的雷达信号检测和参数估计matlab性能仿真
  • 每日两道leetcode(今天开始刷基础题模块——这次是之前的修改版)
  • ES 调优帖:关于索引合并参数 index.merge.policy.deletePctAllowed 的取值优化
  • 数字展厅是什么?怎样实现数字展厅的落地?
  • matlab编写的BM3D图像去噪方法
  • SpringBoot-4-Spring Boot项目配置文件和日志配置
  • 电子制造企业智能制造升级:MES系统应用深度解析
  • centos7安装mysql8.0
  • Android trace presentFence屏幕显示的帧
  • sgRNA的靶基因基因组如何获得? for 下游的 T7E1验证
  • 不同的二叉搜索树 II:动态规划与递归构造
  • JavaScript作用域和作用域链
  • web开发全过程总结
  • 创建一个使用 GPT-4o 和 SERP 数据的 RAG 聊天机器人
  • deepseek梳理java高级开发工程师es面试题
  • 1.3 C++之变量与数据类型
  • Vue百日学习计划Day43-45天详细计划-Gemini版
  • Jenkins+Docker+Harbor快速部署Spring Boot项目详解
  • sv数据格式转换
  • 【氮化镓】低剂量率对GaN HEMT栅极漏电的影响
  • 2025年第十一届传感器、机电一体化和自动化系统国际学术研讨会(ISSMAS 2025)
  • 景区卡机数据报表-跨服务查看数据教程——诸天万界相连—仙盟创梦IDE
  • docker容器知识
  • 宿州金博学校开展防震演练:夯实安全根基,守护校园平安
  • java redis set 集合操作中 如何有效移除自定义对象
  • 深信服golang面经