0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

推荐3个非常不错的开源日志库

GReq_mcu168 ? 来源:小麦大叔 ? 作者:小麦大叔 ? 2022-05-12 14:51 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

日志系统在系统开发和调整过程中的重要性,想必大家应该都清楚。特别是项目出问题之后,却没有日志可以帮忙定位问题,就非常令人痛苦。

因为我们不可能一直通过调试器去单步调试程序,所以设备的运行日志显得尤为重要。

通常我们对日志有这些要求:

  • 不同的日志级别(Debug,Warning,Info,Error,Fatal);
  • 日志打印要和printf一样简单易用;
  • 能够设置日志级别;
  • 占用空间小;
  • 可配置,甚至可以禁用日志;
  • 基于不同日志级别,支持颜色高亮;
  • 可以自定义配置,时间戳;
  • 支持RTOS

以上是比较基本的功能,但是在嵌入式设备中,有的时候我们希望可以保存设备的运行日志,我们需要以下的一些功能;

  • 支持多种访问方式,比如串口终端,保存到嵌入式文件系统中;
  • 支持shell命令行通过串口终端进行访问;

以上这些需求不一定会全部实现。

除了常用的log4clog4cpp,下面给大家推荐3个非常不错的开源日志库,比较适合用在单片机的项目中。从开始的轻量,到后面的功能丰富,最后一个很强大,所以请耐心看到最后。

rxi_log

项目地址:https://github.com/rxi/log.c

基于 C99 实现的简单日志库,具体输出如下所示;

0d58c684-d1bc-11ec-bce3-dac502259ad0.pngimage-20211204142024466

具体用法

将源码中的log.clog.h集成到你的项目中即可,需要打印日志的话,调用下面的API即可,如下所示;

log_trace(constchar*fmt,...);
log_debug(constchar*fmt,...);
log_info(constchar*fmt,...);
log_warn(constchar*fmt,...);
log_error(constchar*fmt,...);
log_fatal(constchar*fmt,...);

除了这些API,还有log_set_quietlog_set_lockLOG_USE_COLOR等等,详情请看原项目。

ulog

项目地址:https://github.com/rdpoor/ulog

uLog 为嵌入式微控制器或任何资源有限的系统提供结构化的日志记录机制。它继承了流行的Log4cLog4j平台背后的一些概念,但开销更低。

uLog 的一些特点:

  • uLog 易于集成到几乎任何环境中,由一个头文件和一个源文件组成,并且是用纯 C 编写的。
  • uLog 提供熟悉的严重级别(CRITICAL、ERROR、WARNING、INFO、DEBUG、TRACE)。
  • uLog 支持多个用户定义的输出(控制台、日志文件、内存缓冲区等),每个输出都有自己的报告阈值级别。
  • uLog 是具有最小依赖性的“积极独立”,仅需要 stdio.h、string.h 和 stdarg.h。
  • 当您不使用 uLog 时,它不会妨碍您:如果 ULOG_ENABLED 在编译时未定义,则不会生成日志记录代码。
  • uLog 已经过很好的测试。有关详细信息,请参阅随附的 ulog_test.c 文件。
0d985fe2-d1bc-11ec-bce3-dac502259ad0.pngcolor coding

EasyLogger

项目地址:https://github.com/armink/EasyLogger

0dbeb408-d1bc-11ec-bce3-dac502259ad0.pngTextColor

这个项目我用了很长时间,强烈推荐,是RT-Thread大佬的作品,已经集成到RTOS的内部了,支持的功能非常丰富,基本满足各种开发的需求。

特点如下:

  • 轻量,ROM<1.6K, RAM<0.3K
  • 支持多种访问模式(例如:终端、文件、数据库、串口、485、Flash...);
  • 日志内容可包含级别、时间戳、线程信息、进程信息等;
  • 线程安全,并支持异步输出缓冲输出模式;
  • 支持多种操作系统(RT-Thread、UCOSLinux、Windows...),也支持裸机平台
  • 日志支持RAW格式,支持hexdump
  • 支持按标签级别关键词进行动态过滤;
  • 各级别日志支持不同颜色显示;
  • 扩展性强,支持以插件形式扩展新功能。

以上只是这个项目的其中一部分,具体可以参考项目地址。

summary

希望大家在平常的开发中,重视日志的使用,每一个开发阶段设置不同级别的日志,不同的模块也分别设置模块的日志,这样方便定位出现一些问题,快速解决,提高效率。

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6068

    文章

    45032

    浏览量

    652146
  • 日志系统
    +关注

    关注

    0

    文章

    8

    浏览量

    7078
  • 开源
    +关注

    关注

    3

    文章

    3754

    浏览量

    43983

原文标题:高手常用的3个开源库,让单片机开发事半功倍!

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    数据数据恢复—SQL Server数据被加密如何恢复数据?

    SQL Server数据故障: SQL Server数据被加密,无法使用。 数据MDF、LDF、log日志文件名字被篡改。
    的头像 发表于 06-25 13:54 ?190次阅读
    数据<b class='flag-5'>库</b>数据恢复—SQL Server数据<b class='flag-5'>库</b>被加密如何恢复数据?

    详解journalctl日志管理

    systemd 提供了自己的日志系统(logging system),称为 journal。使用 systemd 日志,无需额外安装日志服务(syslog)。
    的头像 发表于 06-05 17:22 ?469次阅读
    详解journalctl<b class='flag-5'>日志</b>管理

    解锁LuatOS-log:全栈工程师的日志管理实战课!

    针对全栈开发者设计的实战教程,本文聚焦LuatOS平台log的高效使用,从基础配置到高级调试策略,手把手教你搭建可扩展的日志系统,提升项目维护效率。 今天,我们一起来认识LuatOS的log
    的头像 发表于 05-12 15:23 ?901次阅读
    解锁LuatOS-log<b class='flag-5'>库</b>:全栈工程师的<b class='flag-5'>日志</b>管理实战课!

    如何在CentOS系统中部署ELK日志分析系统

    日志分析已成为企业监控、故障排查和性能优化的重要组成部分。ELK(Elasticsearch、Logstash 和 Kibana)堆栈作为一种强大的开源解决方案,提供了高效的日志收集、存储和可视化
    的头像 发表于 05-08 11:47 ?414次阅读
    如何在CentOS系统中部署ELK<b class='flag-5'>日志</b>分析系统

    基于RV1126开发板限制系统日志大小教程

    的系统日志主要保存在/var/log目录中,当对一台服务器进行任何操作都会有日志产生,如果服务器一年中没有特别重要的情况发生,那么这些日志保留下来就会占用服务器的空间,所以系统日志的管
    的头像 发表于 04-16 11:18 ?258次阅读
    基于RV1126开发板限制系统<b class='flag-5'>日志</b>大小教程

    沐曦GPU跑通DeepSeek开源代码FlashMLA

    今日,DeepSeek正式启动"开源周"计划,首发代码FlashMLA一经开源即引发全网关注。截至发稿,该项目已在GitHub斩获超7.2K Star!
    的头像 发表于 02-25 16:25 ?935次阅读

    AI开源模型有什么用

    AI开源模型作为推动AI技术发展的重要力量,正深刻改变着我们的生产生活方式。接下来,AI部落小编带您了解AI开源模型有什么用。
    的头像 发表于 02-24 11:50 ?476次阅读

    如果系统日志显示驱动问题,我该怎么办?

    如果系统日志显示驱动问题,您可以按照以下步骤进行排查和解决: 1.检查内核日志 使用 dmesg 命令查看内核日志,过滤出与驱动相关的错误信息: ? sudo dmesg | grep -iE
    的头像 发表于 01-20 17:38 ?672次阅读

    1工具4类日志,帮你解决99%的问题

    众所周知,通过日志可以对研发过程中,以及模组运行过程中的各种故障进行分析,快速定位和解决问题。 但新手朋友往往念叨着“抓日志”,却又无从下手……此时就不得不提到工程师朋友的宝藏工具
    的头像 发表于 12-17 16:26 ?604次阅读
    1<b class='flag-5'>个</b>工具4类<b class='flag-5'>日志</b>,帮你解决99%的问题

    开源AI模型是干嘛的

    开源AI模型是指那些公开源代码、允许自由访问和使用的AI模型集合。这些模型通常经过训练,能够执行特定的任务。以下,是对开源AI模型的详细
    的头像 发表于 12-14 10:33 ?823次阅读

    芯原股份与开源图形LVGL达成战略合作

    芯原股份 (芯原,股票代码:688521.SH) 今日宣布与嵌入式系统领域领先的开源图形LVGL达成战略合作,在LVGL中支持芯原的低功耗3D和VGLite 2.5D GPU技术。
    的头像 发表于 11-29 09:20 ?839次阅读

    nginx日志配置方法

    access_log用来定义日志级别,日志位置。
    的头像 发表于 10-24 17:43 ?634次阅读

    日志篇:模组日志总体介绍

    ?今天我们学习合宙模组日志总体介绍,以下进入正文。 一、本文讨论的边界 本文是对合宙 4G 模组, 以及 4G+GNSS 模组的日志功能的总体介绍。通过日志,可以对研发过程中,以及模组运行过程中
    的头像 发表于 10-24 07:16 ?622次阅读
    <b class='flag-5'>日志</b>篇:模组<b class='flag-5'>日志</b>总体介绍

    Matepad pro12.2 已上市半个月,但是还没有在开源网站看到该项目的开源信息,违背开源精神

    Matepad pro12.2 已上市半个月,本人自己也购买了同款12+256的pad,想要同步学习下这款pad的一些体验还不错的功能点,但是目前为止还没有在开源网站看到该项目的开源信息,也查询不到
    发表于 08-27 17:25

    统一日志数据流图

    统一日志数据流图 日志系统数据流图 系统进行日志收集的过程可以分为三环节: (1)日志收集和导入ElasticSearch (2)Elas
    的头像 发表于 08-21 15:00 ?590次阅读
    统一<b class='flag-5'>日志</b>数据流图