大家应该都清楚,特别是项目出问题之后,却没有日志可以帮忙定位问题,就非常令人痛苦。
因为我们不可能一直通过调试器去单步调试程序,所以设备的运行日志显得尤为重要。
通常我们对日志有这些要求:
Debug
,Warning
, Info,
Error
, Fatal
);printf
一样简单易用;以上是比较基本的功能,但是在嵌入式设备中,有的时候我们希望可以保存设备的运行日志,我们需要以下的一些功能;
以上这些需求不一定会全部实现。
除了常用的log4c
,log4cpp
,下面给大家推荐3个非常不错的开源日志库,比较适合用在单片机的项目中。从开始的轻量,到后面的功能丰富,最后一个很强大,所以请耐心看到最后。
项目地址:https://github.com/rxi/log.c
基于 C99 实现的简单日志库,具体输出如下所示;
具体用法
将源码中的log.c
和log.h
集成到你的项目中即可,需要打印日志的话,调用下面的API即可,如下所示;
log_trace(const char *fmt, ...);
log_debug(const char *fmt, ...);
log_info(const char *fmt, ...);
log_warn(const char *fmt, ...);
log_error(const char *fmt, ...);
log_fatal(const char *fmt, ...);
除了这些API,还有log_set_quiet
,log_set_lock
,LOG_USE_COLOR
等等,详情请看原项目。
项目地址:https://github.com/rdpoor/ulog
uLog 为嵌入式微控制器或任何资源有限的系统提供结构化的日志记录机制。它继承了流行的 Log4c
和 Log4j
平台背后的一些概念,但开销更低。
uLog 的一些特点:
项目地址:https://github.com/armink/EasyLogger
这个项目我用了很长时间,强烈推荐,是RT-Thread大佬的作品,已经集成到RTOS的内部了,支持的功能非常丰富,基本满足各种开发的需求。
特点如下:
以上只是这个项目的其中一部分,具体可以参考项目地址。
免费申请开发板
关注面包板社区,每日精选电子技术知识
▼
这几种485通讯自动收发电路,你都掌握吗?
最最最通俗易懂的电磁波基础
带你解锁AC/DC、DC/DC转换器基础
如何让你的PCB变成圆弧角?
50HZ 直消大法
PID原理和参数调试
电容器家族的“王中王”