ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

EasyLogger 嵌入式日志库入门:3 步跑通配置、日志分级与 Flash 存储

EasyLogger 嵌入式日志库入门:3 步跑通配置、日志分级与 Flash 存储 EasyLogger 嵌入式日志库入门3 步跑通配置、日志分级与 Flash 存储【免费下载链接】EasyLoggerAn ultra-lightweight(ROM1.6K, RAM0.3k), high-performance C/C log library. | 一款超轻量级(ROM1.6K, RAM0.3k)、高性能的 C/C 日志库项目地址: https://gitcode.com/gh_mirrors/ea/EasyLogger设备挂在串口上程序跑飞了屏幕却只吐出一串乱码没有任何线索可查——这是嵌入式调试里最崩溃的场景之一。EasyLogger 是一款超轻量级嵌入式日志库ROM 占用小于 1.6K、RAM 占用小于 0.3KROM 相当于芯片里存代码的硬盘RAM 是临时工作台这两个数说明它几乎不占地方专门解决把现场信息打出来这件事。本文带你三步把它跑起来再把配置开关、日志分级和存储玩法讲清楚。一、设计取向它为什么少而精log4c、zlog 这类通用日志库配置项多、概念多适合服务端或桌面环境。EasyLogger 走的是另一条路接口砍到最少——初始化、启动、六个级别的打印、过滤就这几件事。代价是它不替你决定输出到哪日志最终写到哪里由你或插件决定换来的是代码量极小新人读完 核心源码 一个文件就能改它。二、三步跑起来 第一步克隆仓库仓库里自带 Linux、Windows、裸机、FreeRTOS 等平台的示例工程git clone https://gitcode.com/gh_mirrors/ea/EasyLogger第二步配置头文件。打开easylogger/inc/elog_cfg.h默认值已经能直接跑要改什么看下一节。第三步打出第一条日志。在文件顶部定义LOG_TAG然后调用对应级别的接口#define LOG_TAG main elog_init(); elog_start(); log_i(第一条日志设备启动完成);跑 Linux 示例demo/os/linux目录make即可后会看到下面这种带颜色和标签的多级别输出三、配置开关速查elog_cfg.h 里最值得动的几项 ⚙️宏定义作用ELOG_OUTPUT_LVL输出级别阈值低于它的日志直接不打印ELOG_FMT_USING_FUNC / DIR / LINE是否在日志里带函数名、文件路径、行号ELOG_ASYNC_OUTPUT_ENABLE异步输出日志先进缓冲区再后台写出主任务不等串口ELOG_BUF_OUTPUT_ENABLE缓冲输出攒一批再写减少外设操作次数ELOG_COLOR_ASSERT ~ ELOG_COLOR_VERBOSE各级别的颜色和字体风格如F_RED B_NULL S_NORMAL红字、无背景、正常字重过滤是另一类常用开关通过 API 在运行时生效elog_set_filter_lvl()按级别、elog_set_filter_tag()按标签标签是每类代码自带的名片、elog_set_filter_kw()按关键词过滤配合起来就是嵌入式日志过滤的基本功。四、0-5 级日志体系每级该记什么日志级别可以理解为音量档位数字越小越严重必须记数字越大越琐碎能省则省。这套体系参考了 Android Logcat 的设计0 [A] 断言程序走到了不该走的状态触发即故障必须修。1 [E] 错误某次操作失败了比如 Flash 读失败、外设初始化失败。2 [W] 警告没失败但状态异常比如重试成功、参数越界被钳位。3 [I] 信息关键节点比如启动完成网络已连接量产固件常开到这一级。4 [D] 调试开发期定位问题用发版前通常关掉。5 [V] 详细逐字节的流水账只在深度排查时临时打开。五、进阶玩法存进 Flash 与文件 Flash 日志存储很多 MCU 没有文件系统EasyLogger 通过配套的 EasyFlash 库把日志直接写进 Flash 里留档掉电不丢事后取出来分析即可参考 Flash 插件 API 文档 和 Flash 存储移植指南。文件输出与转档在带文件系统的平台上file 插件支持文件转档——文件写满后自动改名换新文件类似收银小票打印机换纸卷也支持循环保存日志只保留最近 N 个文件旧的自动覆盖Flash 永远不会写爆。彩色输出各级别颜色可在elog_cfg.h里单独改错误红色、信息青色串口助手里扫一眼就能定位问题。下图是它跑在 NuttX 系统 SPI Flash 上的实机效果六、常见坑与排查建议 ⚠️多线程下日志乱序或断行多个线程同时打印会互相插话。开启日志输出锁elog_output_lock_enabled(true)或改用缓冲/异步模式让输出串行化。过滤后日志消失先怀疑过滤条件而不是怀疑代码——标签拼错一个字母、或该日志级别低于当前过滤级别都会被拦下。用elog_set_filter_lvl(ELOG_LVL_VERBOSE)放宽到全量确认恢复后再逐条收紧。换平台后要重写输出层EasyLogger 的平台差异集中在移植层elog_port.cRT-Thread、UCOS、NuttX、Linux、裸机各有一套现成实现可参考一般只需替换 OS 相关的输出与延时函数具体方法见 移植指南。写在最后回到开头那个串口乱码的场景现在你可以按级别把现场打出来、按标签过滤到问题模块、再存进 Flash 等工程师来读。想继续深入按这份索引走即可官方文档API 参考移植指南核心源码【免费下载链接】EasyLoggerAn ultra-lightweight(ROM1.6K, RAM0.3k), high-performance C/C log library. | 一款超轻量级(ROM1.6K, RAM0.3k)、高性能的 C/C 日志库项目地址: https://gitcode.com/gh_mirrors/ea/EasyLogger创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表