关注+星标公众号,不错过精彩内容
转自 | 嵌入式大杂烩
在嵌入式开发中,日志调试绝对是最常用、最实用的调试手段。但是可能很多工程师没有充分发挥日志调试的威力!
今天就来分享几个日志技巧,让你从"printf小白"进阶为"日志大师"!
1. 技巧一:模块标签 - 快速定位问题源头
1.1 模块化日志系统

1.2 示例

日志输出效果:
[WIFI]Starting network scan...
[WIFI]Found 3 networks
[WIFI]Network[0]: MyHome_WiFi, RSSI: -45
[WIFI]Network[1]: Office_5G, RSSI: -67
[WIFI]Network[2]: Guest_Network, RSSI: -78
2. 技巧二:精准定位 - 什么时候该打日志?
2.1 错误处理

2.2 关键操作

2.3 系统启动关闭

2.4 性能监控

2.5 通信日志

2.6 用户行为

2.7 分支执行:程序流程追踪

2.8 崩溃信息:故障现场保护

3. 技巧三:日志开关 - 灵活控制日志输出
3.1 模块级日志开关

4. 技巧四:时间戳 - 精确的时序分析
4.1 高精度时间戳

4.2 性能分析日志

5. 技巧五:日志级别 - 分层管理信息
5.1 标准日志级别定义

5.2 实际应用示例

6. 技巧六:格式统一 - 结构化日志信息
6.1 标准日志格式设计

输出效果:
[2024-01-15 14:30:25.123456][INFO][main.c:45][wifi_init] WiFi module initialized
[2024-01-15 14:30:25.234567][DEBUG][sensor.c:128][read_temperature] Temperature: 25.6°C
[2024-01-15 14:30:25.345678][WARN][storage.c:67][save_data] Storage almost full: 95%
7. 技巧七:动态过滤 - 实时调整日志输出
7.1 基于EasyLogger的动态过滤

7.2 命令行日志控制

8. 技巧八:Release/Debug智能切换
8.1 编译时日志控制

最后
好的日志系统不仅能帮你快速定位问题,还能让你深入理解系统的运行状态,甚至预防潜在的问题。
核心要点:
在关键位置打日志 使用模块标签分类 合理设置日志级别 包含精确时间戳 提供动态控制能力
常见误区避免
过度日志:不是越多越好 信息不足:缺乏关键上下文 格式混乱:难以自动化处理 性能忽视:影响系统性能 安全忽视:泄露敏感信息
------------ END ------------

培养一个优秀的嵌入式工程师有多难?

单片机OTA升级中的A/B双分区:经典方案与实现逻辑

几个受欢迎的嵌入式开源项目