Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ulog
【24嵌入式设计大赛】基于ulog日志管理系统
发布于 2024-09-21 20:31:31 浏览:320
订阅该版
[tocm] ## 1.ulog ulog 是一个非常简洁、易用的 C/C++ 日志组件,第一个字母 u 代表 μ,即微型的意思。它能做到最低 ROM<1K, RAM<0.2K的资源占用。ulog 不仅有小巧体积,同样也有非常全面的功能,其设计理念参考的 是另外一款 C/C++ 开源日志库:EasyLogger(简称 elog),并在功能和性能等方面做了非常多的改 进。 ulog特性日志输出的后端多样化,可支持例如:串口、网络,文件、闪存等后端形式。 日志输出被设计为线程安全的方式,并支持异步输出模式。日志系统高可靠,在中断 ISR 、Hardfault 等复杂环境下依旧可用。 日志支持运行期 / 编译期设置输出级别。日志内容支持按关键词及标签方式进行全局过滤。API 和日志格式可兼容 linux syslog。支持以 hex 格式 dump 调试数据到日志中。 兼容 rtdbg (RTT 早期的日志头文件)及 EasyLogger 的日志输出 API。 ### ulog输出级别: #### 全局静态日志级别: 在 menuconfig 中配置,对应 ULOG_OUTPUT_LVL 宏。 全局动态日志级别: 使用 `void ulog_global_filter_lvl_set(rt_uint32_t level)` 函数来设定。 #### 模块静态日志级别: 在模块(文件)内定义 LOG_LVL 宏,与日志标签宏 LOG_TAG 定义方式类似。 模块动态日志级别:使用 `int ulog_tag_lvl_filter_set(const char *tag, rt_uint32_t level)` 函数来设定。 它们的作用范围关系为:全局静态>全局动态>模块静态>模块动态。 #### 日志标签, 由于日志输出量的不断增大,为了避免日志被杂乱无章的输出出来,就需要使用标签(tag)给每条日志进行分类。 标签的定义是按照模块化的方式,例如:Wi-Fi 组件包括设备驱动(wifi_driver)、设备管理(wifi_mgnt)等模块,则 Wi-Fi 组件内部模块可以使用 wifi.driver 、 wifi.mgnt 等作为标签,进行日志的分类输出。 每条日志的标签属性也可以被输出并显示出来,同时 ulog 还可以设置每个标签(模块)对应日志的输出级别,当前不重要模块的日志可以选择性关闭,不仅降低 ROM 资源,还能帮助开发者过滤无关日志 ## 2. SFUD 是一款开源的串行 SPI Flash 通用驱动库。由于现有市面的串行 Flash 种类居多,各个 Flash 的规格及命令存在差异, SFUD 就是为了解决这些 Flash 的差异现状而设计,让我们的产品能够支持不同品牌及规格的 Flash,提高了涉及到 Flash 功能的软件的可重用性及可扩展性,同时也可以规避 Flash 缺货或停产给产品所带来的风险。 ## 3. FAL 组件是 RT-Thread 提供的一个操作 Flash 的抽象应用,与 RT-Thread 无依赖,可以裸机使用,EasyFlash 就是在此基础上运行的,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作。 ## 4. FlashDB是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。 ## 5.主要实现步骤: 定义设备表、挂载flash、配置fal设备表、设置fal分区、添加flashdb功能(后端设备初始化、实现TSDB功能) ## 6.原理: 把tsdb作为ulog输出的后端设备,实现保存日志数据到flash中 区间内日志查询:调用fdb_tsl_iter_by_time(&global_tsdb,from_time,to_time,query_cb,&global_tsdb);API即可查询输入的区间内的日志数据 ## 7.效果如下 查询全部日志: ![3a2c131078f48f3899cb5e82e0c738e.png](https://oss-club.rt-thread.org/uploads/20240921/f452e305a071709cda9984bacb5803fc.png.webp) 查询时间段内日志: ![083226b8f4d3a0257e3e19b033d2ebb.png](https://oss-club.rt-thread.org/uploads/20240921/3e5cd0beac6251f579701c8b6962867e.png.webp)
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Tt_krl
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
1
版本发布时怎样关闭LOG_D打印出的日志
2
怎样通过scons 配置日志输出usart,spi等初始化成功日志
3
请问哪里有rt_thread ulog日志存成文件的例程或者demo
4
文件系统的再次挂载问题
5
关于关闭打印调试信息输出
6
nano 中日志组件打印出现乱码问题
7
ulog_easyflash :Log sector header error
8
uog阻塞fish,无法输入
9
ulog的互斥信号量锁死
10
ulog组件能否输出float类型数据?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
5
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部