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

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

审核编辑 :李倩


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

    关注

    6078

    文章

    45629

    浏览量

    675330
  • 日志系统
    +关注

    关注

    0

    文章

    8

    浏览量

    7157
  • 开源
    +关注

    关注

    3

    文章

    4421

    浏览量

    46576

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux系统日志的分析方法和排查技巧

    日志是运维工程师排查问题的第一手资料。当服务器出现异常时,系统日志、应用日志、安全日志中往往隐藏着问题的答案。然而,很多工程师面对海量的日志
    的头像 发表于 05-14 10:44 409次阅读

    模组日志功能技术概览

    模组日志功能技术方案以低侵入、高可用为原则,提供统一的日志API、多级日志分类与条件输出机制。通过集成该技术,开发者可在不干扰业务逻辑的前提下,全面掌握模组的执行状态与异常行为。 一、本文讨论的边界
    的头像 发表于 01-14 15:32 296次阅读
    模组<b class='flag-5'>日志</b>功能技术概览

    OpenTenBase核心贡献者分享开源数据的破局之路

    “在开源数据已成一片‘红海’的当下,单纯比拼‘快’或‘省’,已很难在开发者心中建立独特的护城河。”OpenTenBase核心贡献者、腾讯云数据专家工程师李晋钢这样阐述他对当前数据
    的头像 发表于 12-29 14:00 612次阅读

    炎核开源开放平台上架推出OpenSparseBlas高性能稀疏计算

    在科学计算与工程仿真领域,高效处理大规模稀疏矩阵运算是提升整体计算效能的关键。为此,我们在炎核开源开放平台上架推出 OpenSparseBlas——一专为稀疏矩阵/向量计算而打造的高性能稀疏计算
    的头像 发表于 12-15 15:18 1081次阅读

    使用littlefs存储ulog日志,然后读日志文件会出错,为什么?

    使用littlefs存储ulog日志,然后通过命令读取日志文件,或者通过API接口读取或拷贝日志文件,都会导致线程卡死,尝试了多种方法都不行,有没有大佬有遇到或者处理过类似问题? 改成fatfs来存
    发表于 09-29 06:14

    开源项目!FourThirdsEye 开源 M4/3 相机模块

    FourThirdsEye 是一开源相机板,专为树莓派5 (Raspberry Pi 5) 和树莓派计算模块4 (Raspberry Pi Compute Module 4) 设计,采用微型
    发表于 07-30 13:43

    数据数据恢复—服务器异常断电导致Oracle数据故障的数据恢复案例

    备份,仅有一些断断续续的归档日志。 Oracle数据恢复流程: 1、检测数据故障情况; 2、尝试挂起并修复数据3、解析
    的头像 发表于 07-24 11:12 932次阅读
    数据<b class='flag-5'>库</b>数据恢复—服务器异常断电导致Oracle数据<b class='flag-5'>库</b>故障的数据恢复案例

    电商API日志分析的实用工具

      在当今数字化电商时代,API(应用程序编程接口)已成为平台与外部系统交互的核心通道。电商API日志记录了每一次请求的详细信息,包括用户行为、交易状态、错误响应等。分析这些日志能帮助企业监控性能
    的头像 发表于 07-23 15:50 860次阅读
    电商API<b class='flag-5'>日志</b>分析的实用工具

    飞书富文本组件RichTextVista开源

    近日,飞书正式将其自研的富文本组件 RichTextVista(简称“RTV”)开源,并上线OpenHarmony 三方中心仓。该组件以领先的性能、流畅的渲染体验与高度的开放性,为鸿蒙生态提供了更高效的富文本解决方案。
    的头像 发表于 07-16 16:47 1233次阅读

    harmony-utils之LogUtil,日志工具类

    harmony-utils之LogUtil,日志工具类 harmony-utils 简介与说明 harmony-utils 一款功能丰富且极易上手的HarmonyOS工具,借助众多实用工具类
    的头像 发表于 07-03 18:12 635次阅读

    请问EZ-Serial固件是否使用任何OSS(开源软件)或软件?

    EZ-Serial 固件是否使用任何 OSS(开源软件)或软件?
    发表于 07-02 08:14

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

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

    详解journalctl日志管理

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

    3D AD文件

    3D文件
    发表于 05-28 13:57 6次下载

    怎样才能安全地按住ctrc +c日志阅读器然后才能停止并重新启动日志

    的读取过程,我将无法在 FX3 中操作任何东西,所有命令都不起作用,所有控件写入/读取都将不起作用 以下是两函数 我怎样才能安全地按住 ctrc +c 我的日志阅读器然后才能停止并重新启动
    发表于 05-27 07:11