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

项目-SERVER模块-日志宏

日志宏


#define INF 0
#define DBG 1
#define ERR 2#define LOG_LEVEL INF
#define LOG(level, format, ...)   do {\if (level < LOG_LEVEL) break;\time_t t = time(NULL);\struct tm *ltm = localtime(&t);\char tmp[32] = {0};\strftime(tmp, 31, "%H:%M:%S", ltm);\printf("[%s][%s:%d] " format "\n", tmp, __FILE__, __LINE__, ##__VA_ARGS__);\} while(0)#define INF_LOG(format, ...) LOG(INF, format, ##__VA_ARGS__);
#define DBG_LOG(format, ...) LOG(DBG, format, ##__VA_ARGS__);
#define ERR_LOG(format, ...) LOG(ERR, format, ##__VA_ARGS__);

这段代码定义了一些宏和宏的组合,用于实现日志输出功能。

  1. INF, DBG, ERR: 分别定义了三个日志级别,分别为信息、调试和错误。

  2. LOG_LEVEL INF: 定义了一个日志级别,可以通过修改LOG_LEVEL的值来控制输出哪种级别及以上的日志。

  3. LOG(level, format, ...): 这是一个宏,用于输出日志。根据传入的level值和LOG_LEVEL比较来确定是否输出日志,然后使用printf函数输出带有时间、文件名和行号等信息的格式化字符串。

  4. INF_LOG(format, ...), DBG_LOG(format, ...), ERR_LOG(format, ...): 这三个宏实际上是对LOG宏的封装,分别用于输出信息、调试和错误级别的日志。调用这些宏会将对应的日志级别传递给LOG宏进行处理。

总的来说,这些宏的作用是在不同级别下输出带有时间、文件名和行号信息的日志,方便程序员进行调试和错误定位。根据设置的LOG_LEVEL值,可以灵活控制输出的日志级别,使得日志输出更加可控和灵活。

http://www.lryc.cn/news/309185.html

相关文章:

  • TCP为什么要三次握手?
  • 网络防御第6次作业
  • Jmeter分布式部署
  • Odoo迈入开源第一低代码开发平台的重要里程碑
  • WinForm、Wpf自动升级 AutoUpdater.NET
  • GPU不够用:语言模型的分布式挑战
  • 深入理解Redis中的渐进式Rehash技术
  • 数据结构 栈和队列 力扣例题AC——代码以及思路记录
  • 管理类联考--复试--英文面试--各校英文面试内容
  • Android修行手册-Chaquopy中opencv、numpy的初步应用
  • VBA将当前打开的表格生成PDF图片
  • 解锁AI大模型秘籍:未来科技的前沿探索
  • 一文带你了解MySQL之B+树索引的原理
  • 【Vue】npm run build 打包报错:请在[.env.local]中填入key后方可使用...
  • 中国电子学会2020年06月真题C语言软件编程等级考试三级(含详细解析答案)
  • WPF的DataGrid自动生成中文列头
  • CSS【详解】居中对齐 (水平居中 vs 垂直居中)
  • 【排序算法】基数排序
  • 解释存储过程和函数的区别,以及它们在MySQL中的用途。如何创建和使用存储过程和函数?
  • 【GPU驱动开发】-GPU架构简介
  • m位数问题(c++题解)
  • 洛谷P1331海战
  • 如何利用Flutter来写后端 服务端应用
  • 数据页和缓存页(BufferPool)
  • LibreOJ 136. 最小瓶颈路 题解 最小生成树 倍增
  • 前端学习第三天-css基础
  • 各种使用chatgpt prompts技巧
  • 基于单片机的企业指纹考勤系统设计
  • JUC(java.util.concuurrent)的常见类介绍
  • 【中科院计算所】WSDM 2024冠军方案:基于大模型进行多文档问答