RT-Thread发布“超轻量级“日志组件ulog.doc

上传人:白大夫 文档编号:3272767 上传时间:2019-08-07 格式:DOC 页数:4 大小:18.50KB
返回 下载 相关 举报
RT-Thread发布“超轻量级“日志组件ulog.doc_第1页
第1页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《RT-Thread发布“超轻量级“日志组件ulog.doc》由会员分享,可在线阅读,更多相关《RT-Thread发布“超轻量级“日志组件ulog.doc(4页珍藏版)》请在三一文库上搜索。

1、RT-Thread发布“超轻量级“日志组件ulog在介绍 ulog 前,我们先来了解一些日志的概念:日志的定义:日志会将软件运行的状态、过程等信息,输出到不同的介质中(例如:文件、控制台、显示屏等),并进行显示和保存。为软件调试、维护过程中的问题提供追溯、性能分析、系统监控、故障预警等功能,同时提供参考依据。可以说,日志的使用,几乎占用了软件生命周期至少 80% 的时间。日志的重要性:对于操作系统而言,由于其软件的复杂度非常大,单步调试在一些场景下并不适合,所以日志组件在操作系统上几乎都是标配。完善的日志系统也能让操作系统的调试事半功倍。RT-Thread 一直缺少小巧、实用的日志组件,而 u

2、log 的诞生补全了这块的短板。今天,它将作为 RT-Thread 的基础组件被开源出来,让我们的开发者也能用上简洁易用的日志系统,提高开发效率。ulog 介绍ulog 是一个非常简洁、易用的 C+/C+ 日志组件,第一个字母 u 代表 ,即微型的意思。它能做到最低ROM主要特性线程安全日志输出被设计为是线程安全的方式,当前线程日志输出不会被其他线程打断干扰。不用再担心像使用 rt_kprintf 那样,多线程并发输出日志时,日志显示错位、截断等问题。高可靠日志系统可靠性高,在中断 ISR中、Hardfault等复杂环境下依旧可用。不仅留给用户的限制更少,还能够保证系统在出错场景下,记录的日志

3、依旧准确、全面,成为用户的调试利器。而这点在其他常见的日志系统中是做不到的。后端多样化ulog 可以将日志输出到终端、串口、网络,文件、闪存等位置,这些地方在 ulog 里统称为后端。ulog 采用了前后端分离式设计,保证了日志的后端代码的独立性以及可扩展性。无论什么样的后端,只要实现出来,都可以注册上去。当前 ulog 已经集成了两种后端:console 控制台:即大家常用的 rt_kprintf 输出的位置;Flash 存储:该后端已集成到 RT-Thread 的软件包中,具体位置如下:未来还将会有更多的后端加入进来,也期待大家一起参与,实现你们需要的后端,然后分享出来。支持异步输出在 u

4、log 中,默认的输出模式是同步模式,在很多场景下用户可能还需要异步模式。用户在调用日志输出 API 时,会将日志缓存到缓冲区中,会有专门负责日志输出的线程取出日志,然后输出到后端。这样日志输出不会阻塞当前线程,日志调试代码也就不会影响当前线程运行时序。灵活的过滤配置支持运行阶段/编译阶段开关控制全局的日志输出级别;各模块的日志支持运行阶段/编译阶段设置输出级别;日志内容支持按关键词及标签方式进行全局过滤;以上运行阶段的配置也都支持通过 Finsh/MSH 命令进行操作。兼容 syslogulog 提供了 syslog 模式的支持,不仅仅前端 API 与 syslog API 完全一致,日志的

5、格式也符合 RFC 标准,更好的兼容了来自 linux 平台上的软件代码。支持 hexdumphexdump 也是日志输出时较为常用的功能,通过 hexdump 可以将一段数据以 hex 格式输出出来。大致效果如下:支持浮点数打印这个一直以来都是大家用 rt_kprintf 的痛点,现在在 ulog 上得到了彻底的解决。使用前,需要先在 menuconfig 中配置开启 ulog 的浮点数支持。兼容 rtdbg.h 及 elogrtdbg 是 RT-Thread 早期的日志头文件,当前 rtdbg 已完成无缝对接ulog ,开启 ulog 后,旧项目中使用 rtdbg 的代码无需做任何修改,即

6、可使用 ulog 完成日志输出。elog 是 EasyLogger 的简称,对于 elog 来说,ulog 能完全做到 API 层面的兼容。使用时,只需要将旧项目源代码中的 #include 更换为 #include 即可,其他代码无需再做任何改动。使用流程ulog 的代码目前开源在 RT-Thread 的 GitHub 仓库中,代码位于 rt-thread/components/utilities/ulog 下,大致使用流程如下:开启:通过 ENV 工具,在 menuconfig 中的 utilities 菜单下选中 ulog 组件;使用:可以参考 ulog 的应用笔记,ulog 的主要日志

7、 API 非常简单,基本用法如下:#define LOG_TAG example /定义当前文件的日志标签,不定义默认为:NO_TAG#define LOG_LVL LOG_LVL_DBG /定义当前文件的日志输出级别,不定义默认为:调试级别#include /* 使用 ulog API 输出日志 */LOG_D(this is a debug log!);LOG_I(this is a info log!);LOG_W(this is a warning log!);LOG_E(this is a error log!);获取文档RT-Thread 为 ulog 组件提供了两篇应用笔记,从由

8、浅入深的角度帮助大家更好的使用该组件,文档如下:(以下链接请复制至外部浏览器打开)RT-Thread ulog 日志组件应用笔记 - 基础篇:https:/rt-thread/document/site/rtthread-application-note/debug/ulog/an0022-rtthread-debug-ulog-basic/RT-Thread ulog 日志组件应用笔记 - 进阶篇:https:/rt-thread/document/site/rtthread-application-note/debug/ulog/an0024-rtthread-debug-ulog-advance/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1