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

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++ 的官方文档以获取更详细的信息和高级用法。

相关文章:

  • 软考 系统架构设计师系列知识点之杂项集萃(64)
  • 从无标注的病理切片中自动提取临床相关的组织形态表型簇,探索其与患者预后、分子表型以及治疗反应的关联
  • DAY 30 超大力王爱学Python
  • MES管理系统电子看板驱动企业智能制造
  • Solana 快照功能全解析及其在空投、治理与激励中的应用
  • FactoryBean是什么,Spring如何实现FactoryBean的?
  • 数据结构与算法学习笔记(Acwing 提高课)----动态规划·状态机模型
  • 19 C 语言位运算、赋值、条件、逗号运算符详解:涵盖运算符优先级与复杂表达式计算过程分析
  • POSTGRESQL 初体验
  • GitLab部署
  • 前端mjs和js文件区别,mjs和cjs区别---.es.js和.mjs的区别
  • Jules 从私有预览阶段推向全球公测
  • 虚幻引擎5-Unreal Engine笔记之摄像头camera
  • R语言学习--Day04--数据分析技巧
  • 基于HTML的Word风格编辑器实现:从零打造功能完备的富文本编辑器
  • AI-02a5a7.神经网络-与学习相关的技巧-正则化
  • leetcode 合并区间 java
  • 【神经网络与深度学习】激活函数的可微可导
  • IDEA2025版本使用Big Data Tools连接Linux上Hadoop的HDFS
  • [面试精选] 0001. 两数之和
  • 梅花奖在上海丨好戏在上海不缺观众,冷门剧种叫好又叫座
  • 零跑汽车一季度营收破百亿元:净亏收窄至1.3亿元,毛利率14.9%创新高
  • 两次通话、三点诉求,泽连斯基对美称愿与俄签署和平备忘录
  • 南宁海关辟谣网传“查获600公斤稀土材料”:实为焊锡膏
  • 人民日报大家谈:为基层减负,治在根子上减到点子上
  • 四大皆空!赛季还没结束,曼城已经吃上“散伙饭”了