电子产业一站式赋能平台

PCB联盟网

搜索
查看: 138|回复: 0
收起左侧

分享一个适合单片机的轻量级日志库

[复制链接]

418

主题

418

帖子

4293

积分

四级会员

Rank: 4

积分
4293
发表于 2024-10-16 11:45:00 | 显示全部楼层 |阅读模式
关注+星标公众,不错过精彩内容
来源 | Github
编排 | strongerHuang
单片机项目在很多时候都需要调试,通过日志诊断bug是常见的一种调试方法。
下面就给大家分享一个开源的适合单片机的轻量级日志库,只有log.c 和 log.h 两个文件,使用非常方便。
开源地址:
https://github.com/rxi/log.c

mjgrlzouzck6406921426.png

mjgrlzouzck6406921426.png

用法
这个日志库的使用比较简单,新手完全可以胜任。
1、概述在你的项目中添加 log.c 和 log.h 文件。
提供 6 用于日志记录的类似函数的宏:
  • 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, ...);
    每个函数都采用一个 printf 格式字符串,后跟其他参数:
  • log_trace("Hello %s", "world")
    生成一行给定格式的行打印到 stderr:
  • 20:18:26 TRACE src/main.c:11: Hello world
    2、接口描述
  • log_set_quiet(bool enable)可以通过传递给函数来启用Quiet安静模式(不输入日志)。
    启用此模式时,库不会向输出任何内容,但是将继续写入文件和回调(如果已设置)。truelog_set_quiet()stderr

  • log_set_level(int level)可以使用该函数设置当前日志记录级别。不会将低于给定级别的所有日志写入 。默认情况下级别为LOG_TRACE, ,即不忽略任何内容。log_set_level()stderrLOG_TRACE

  • log_add_fp(FILE *fp, int level)可以将一个或多个将写入日志的文件指针提供给库,通过使用函数。写入文件的数据输出采用以下格式:log_add_fp()
  • 2047-03-11 20:18:26 TRACE src/main.c:11: Hello world
    给定值以下的任何消息都将被忽略。如果库无法添加文件指针返回小于零的值。

  • log_add_callback(log_LogFn fn, void *udata, int level)使用日志数据调用的一个或多个回调函数可以是 通过使用函数提供给库。回调 函数传递一个包含数字、、字符串、printf va_list和给定 .log_add_callback()log_Eventlinefilenamefmtvaleveludata

  • log_set_lock(log_LockFn fn, void *udata)如果日志将从多个线程写入,则可以设置锁定函数。如果应该获取锁,或者是否应该释放锁并给定值,则该函数将传递布尔值。truefalseudata

  • const char* log_level_string(int level)以字符串形式返回给定日志级别的名称。

    LOG_USE_COLOR
    如果使用-DLOG_USE_COLOR编译库,则在打印时将使用ANSI转义码。
    开源协议
    该库为免费软件库,但你需要对应的 MIT 许可证条款。------------ END ------------

    usaz1px5za46406921526.gif

    usaz1px5za46406921526.gif

    ●专栏《嵌入式工具●专栏《嵌入式开发》●专栏《Keil教程》●嵌入式专栏精选教程
    关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
    点击“阅读原文”查看更多分享。
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表