前言
做嵌入式调试,老觉得日志输出又慢又占空间?标准 printf、syslog、各种库,啥都有,可要么臃肿得像头大象,要么灵活性不给力。今天给大家安利一个 C89 写的超轻量级日志框架——em)bedlog,让你的日志输出又快又小,还能随心所欲多路输出。
embedlog 是什么?
简单一句话:embedlog 是个专为嵌入式和资源受限系统设计的日志管理库。
• 纯 C89 实现,兼容性绝佳 • 编译时可按需开启/关闭功能,生成最小二进制 • 支持多种输出:stderr、stdout、文件、串口、syslog(Nuttx)甚至自定义回调 • 可选精度的时间戳、文件/行/函数信息、ANSI 颜色、日志轮转、二进制日志等
解决了哪些痛点?
你有没有遇到过:
• 内存被日志库吃干抹净,一堆浮点、locale、宽字符真没用 • 多任务打印互相打架,输出信息乱序、乱码 • 想同时输出到文件、串口、调试终端,结果得写 N 套 printf • 日志文件暴涨,没有轮转又自动删不了
embedlog 一举搞定:可编译选项精简代码,多线程安全单行加锁,多输出流自动管理,文件轮转随心设。
核心功能亮点
使用示例
#include <embedlog.h>
intmain(void){
el_init();
el_set_timestamp(EL_TS_LONG, EL_TS_TM_REALTIME, EL_TS_FRACT_US);
el_print_extra_info(1);
el_enable_file_log("/tmp/log.txt",5,512*1024);
el_print(ELN,"日志开始记录,多路输出 OK!");
el_print(ELF,"致命错误示例");
el_pmemory(ELN, some_buffer, buffer_len);
el_cleanup();
return0;
}
上面代码会同时把日志打到 stderr 和 /tmp/log.txt
,自动轮转 5 个文件,每个最大 512KB,还带时间戳、文件/行信息。
优缺点对比
总结与推荐
embedlog 就像在你项目里插了个开关:需要什么日志功能,就开哪个,性能、内存都给你最大留白。不管是深度嵌入式还是普通 C/C++ 应用,都能轻松上手,日志管理从此不再臃肿。强烈建议给下个项目配上它,调试、监控、出问题追踪都更省心!
项目地址:https/github.com/mlyszczek/embedlog
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/12046.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~