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

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

审核编辑 :李倩


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

    关注

    6032

    文章

    44520

    浏览量

    633079
  • 日志系统
    +关注

    关注

    0

    文章

    7

    浏览量

    6997
  • 开源
    +关注

    关注

    3

    文章

    3254

    浏览量

    42408

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

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

收藏 人收藏

    评论

    相关推荐

    nginx日志配置方法

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

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

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

    日志框架简介-Slf4j+Logback入门实践

    前言 随着互联网和大数据的迅猛发展,分布式日志系统和日志分析系统已广泛应用,几乎所有应用程序都使用各种日志框架记录程序运行信息。因此,作为工程师,了解主流的日志记录框架
    的头像 发表于 07-30 10:00 1077次阅读
    <b class='flag-5'>日志</b>框架简介-Slf4j+Logback入门实践

    奇怪!应用的日志呢??

    1. 问题回顾 问题背景 是在进行中台应用中间件迁移过程中,发现存在 项目启动失败 或者 项目正常启动 (jsf正常挂载并正常运行,mq正常发送和消费)但是 无任何日志打印 现象。 更奇怪 的是不打
    的头像 发表于 06-11 10:48 293次阅读
    奇怪!应用的<b class='flag-5'>日志</b>呢??

    阿里云与中兴通讯达成开源数据合作

    近日,阿里云与中兴通讯宣布达成开源数据领域的深度合作。中兴通讯正式加入PolarDB开源社区,并荣任首届理事会成员单位,这一举措标志着两大科技巨头在数据领域的合作迈向新的高度。
    的头像 发表于 05-17 10:47 525次阅读

    阿里云与中兴通讯达成开源数据合作,助推国产数据发展

    据悉,阿里云与中兴通讯于5月16日公布了开源数据合作事宜。中兴通讯正式宣布加入PolarDB开源社区,并担任首届理事会成员单位。
    的头像 发表于 05-16 16:34 418次阅读

    NVIDIA加速微软最新的Phi-3 Mini开源语言模型

    NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微软最新的 Phi-3 Mini 开源语言模型。TensorRT-LLM 是一开源
    的头像 发表于 04-28 10:36 489次阅读

    选择 KV 数据最重要的是什么?

    经常有客户提到 KV 数据,但却偏偏“不要 Redis”。比如有做安全威胁分析平台的客户,他们明确表示自己对可靠性要求非常高,需要的不是开源 Redis 这种内存缓存
    的头像 发表于 03-28 22:11 674次阅读
    选择 KV 数据<b class='flag-5'>库</b>最重要的是什么?

    深耕文档型数据12载,SequoiaDB再开源

    、易用性四方向的技术特性,宣布了2024年面向技术社区的开源计划。此次发布活动不仅是对SequoiaDB性能的全面介绍,更是对十余年来始终坚守以JSON文档型数据库内核为技术底座的发展历程的深刻回顾。不忘来时路,方知向何行,巨杉数据
    的头像 发表于 01-16 13:06 272次阅读

    OpenHarmony开源GPUMesa3D适配说明

    ,对下使用Gallium框架,屏蔽驱动差异。在RK3568中,panfrost对ARM GPU提供了非常好的开源驱动支持。 二、适配方法 在RK3568 GPU 开源mesa
    发表于 12-25 11:38

    oracle数据alert日志作用

    Oracle数据的alert日志是数据引擎和实例的核心组件之一,它记录着数据的运行状况和事件。该日志对于数据
    的头像 发表于 12-06 10:08 1200次阅读

    聊聊日志即数据

    《数据故障恢复机制的前世今生》[1]一文中介绍过,由于磁盘的的顺序访问性能远好于随机访问,数据设计中通常都会采用WAL的方式,将随机访问的数据请求转换为顺序的日志IO,并通过Bu
    的头像 发表于 12-06 09:30 678次阅读
    聊聊<b class='flag-5'>日志</b>即数据<b class='flag-5'>库</b>

    redis容器内怎么查看redis日志

    redis是一款流行的开源内存数据,常用于缓存、消息队列、任务管理等场景。在使用redis时,了解如何查看redis日志对于排查问题、监控性能和分析应用程序行为非常重要。在本文中,我
    的头像 发表于 12-05 10:10 3498次阅读