"); //-->
ulog日志记录库是一个精小的静态日志记录库。内部很多功能均由宏定义来实现。用户可以修改日志的级别用于过滤特定级别的日志。
文件ulog.h:定义了各种日志记录级别和日志记录宏
ulog.c:提供了内存打印等接口函数
ASSERT.h:提供了用户可定义的断言宏支持
VS文件夹:VC上位机测试示例
MDK文件夹:MDK下位机测试示例
ulog支持5种日志记录级别,可在ulog.h文件中修改LOG_CFG_LEVE宏定义来定义日志的记录级别。
G_DEBUG:调试日志级别,用来记录最详细的调试信息和执行步骤
G_TRACE:跟踪日志级别,用来记录重要的跟踪信息
G_WARNG:警告日志级别,用来记录一些警告信息
G_ERROR:错误日志级别,用来记录严重的错误信息
G_NONE:不做任何日志记录
定义日志记录样式示例1:将LOG_CFG_LEVE配置为G_WARNG级别,则只会显示G_WAGNG和G_ERROR两个级别的日志记录,其他的记录级别较低将不被显示 示例2:配置为G_NONE级别将禁用日志记录功能
在ulog.h文件中定义了LOG_FUN宏,用户可以对其修改来改变日志的打印样式
// 定义打印样式使用方式
#define LOG_FUN(LEVESTR,format, ...)
LOG_PRINTF("["LEVESTR"] <"__FILE__": %d"">: " format "rn",__LINE__,##__VA_ARGS__)
ASSERT_MSG(, ); uLOG(G_DEBUG,,); uLOG_MEM(G_DEBUG, randbuff, , ,);
打印数据如下:
[G_DEBUG] <main.c: 16>: error:123 [G_DEBUG] <main.c: 17>: error:586 00000000: 29 23 BE 84 E1 6C D6 AE 52 90 49 F1 F1 BB E9 EB )#...l..R.I..... 00000010: B3 A6 DB 3C 87 0C 3E 99 24 5E 0D 1C 06 B7 47 DE ...<..>.$^....G. 00000020: B3 12 4D C8 43 BB 8B A6 1F 03 5A 7D 09 38 25 1F ..M.C.....Z}.8%. 00000030: 5D D4 CB FC 96 F5 45 3B 13 0D 89 0A 1C DB AE 32 ].....E;.......2 00000040: 20 9A 50 EE 40 78 36 FD 12 49 32 F6 9E 7D 49 DC .P.@x6..I2..}I. 00000050: AD 4F 14 F2 44 40 66 D0 6B C4 30 B7 32 3B A1 22 .O..D@f.k.0.2;." 00000060: F6 22 91 9D E1 8B 1F DA B0 CA 99 02 B9 72 9D 49 ."...........r.I 00000070: 2C 80 7E C5 99 D5 E9 80 B2 EA C9 CC 53 ,.~.........S
以上为程序的使用示例,说明如下:
uLOG:指定日志级别和相应的字符串,其支持printf类似的转移修饰符
uLOG_MEM:可打印指定的内存数据,同样需要指定日志级别,
ASSERT:该宏当参数为假时会停止程序,并打印显示当前导致断言的文件和行号
ASSERT_MSG:与ASSERT相同,只不过多了个字符串参数,可以显示一些信息。
该库编写时使用了一些C99特性,所以编译器必须支持C99标准。已经在VS2015和MDK5.0中测试,均可正常工作。移植时必须定义LOG_PRINTF宏到实际的打印函数,还必须定义LOG_PUT_CHAR宏到实际的字符输出函数:
// 字符输出函数
#define LOG_PUT_CHAR(C) putchar(C)
// 日志记录接口
#define LOG_PRINTF(format, ...) printf(format, ##__VA_ARGS__)
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
相关推荐
浅谈嵌入式LINUX系统教与学
汽车存储器新突破:8nm128Mb嵌入式MRAM的研发
陈渝大侠翻译的 uClinux2.6入门
LCD驱动器SD0432与嵌入式系统的接口设计
展会预告!米尔邀您相约德国嵌入式展 2026Embedded World
大家在互相借鉴吧!--嵌入式系统词汇表
大家在互相借鉴吧!--嵌入式系统词汇表
研华模块化电脑SOM-7583:通过模块化架构应对人形机器人应用挑战
华清远见嵌入式在线视频教程——2、嵌入式系统的选择与开发
大家在互相借鉴吧!--嵌入式系统词汇表
嵌入式系统方案设计
嵌入式U盘读写器接口技术和系统设计
一款用于远程嵌入式设计的机器人
华清远见嵌入式在线视频教程——5、嵌入式Linux移植和u-boot
未来倾向于UFS用于高性能嵌入式闪存
IAR 扩展了嵌入式开发平台,提供 LTS 服务
第一讲:嵌入式系统概述
从COM到SMARC再到OSM:嵌入式计算模块的发展
LAN91C111型控制器在嵌入式以太网接口中的应用
TI将边缘AI微控制器更深入地融入嵌入式设计
USB-HOST实时数据采集嵌入式模块的实现
Windows CE 开发初步(第一部)
嵌入式操作系统大比拼
华清远见嵌入式在线视频教程——3、嵌入式Linux开发应用介绍
RK3576 + ROS2 SLAM建图与导航实战
嵌入式系统的实时数据接口扩展
华清远见嵌入式在线视频教程——1、走近嵌入式系统
大家在互相借鉴吧!--嵌入式系统词汇表
华清远见嵌入式在线视频教程——4、基于ARM的嵌入式开发
米尔亮相德国嵌入式展2026 Embedded World