esp32-serial-logging
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseESP32 Serial Log Monitoring
ESP32串口日志监控
Overview
概述
Capture serial output from ESP32 (or any microcontroller) to a file for real-time monitoring and analysis.
捕获ESP32(或任何微控制器)的串口输出到文件,以便进行实时监控和分析。
ESP32 Setup (Device Side)
ESP32设备端设置
ESP-IDF Framework
ESP-IDF框架
cpp
#include "esp_log.h"
static const char* TAG = "MyComponent";
void my_function() {
ESP_LOGI(TAG, "Info message");
ESP_LOGW(TAG, "Warning: value=%d", some_value);
ESP_LOGE(TAG, "Error occurred");
ESP_LOGD(TAG, "Debug details");
}cpp
#include "esp_log.h"
static const char* TAG = "MyComponent";
void my_function() {
ESP_LOGI(TAG, "Info message");
ESP_LOGW(TAG, "Warning: value=%d", some_value);
ESP_LOGE(TAG, "Error occurred");
ESP_LOGD(TAG, "Debug details");
}Arduino Framework
Arduino框架
cpp
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("Status: running");
Serial.printf("Sensor: %d\n", analogRead(A0));
delay(1000);
}cpp
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("Status: running");
Serial.printf("Sensor: %d\n", analogRead(A0));
delay(1000);
}Host Side - Capture Logs
主机端 - 捕获日志
bash
undefinedbash
undefinedFind serial port
Find serial port
PORT=$(ls /dev/cu.usbmodem* /dev/ttyUSB* /dev/ttyACM* 2>/dev/null | head -1)
echo "Found port: $PORT"
PORT=$(ls /dev/cu.usbmodem* /dev/ttyUSB* /dev/ttyACM* 2>/dev/null | head -1)
echo "Found port: $PORT"
Configure and start capture
Configure and start capture
stty -f "$PORT" 115200 raw -echo 2>/dev/null || stty -F "$PORT" 115200 raw -echo
cat "$PORT" >> /tmp/device.log &
echo "Logging to /tmp/device.log (PID: $!)"
undefinedstty -f "$PORT" 115200 raw -echo 2>/dev/null || stty -F "$PORT" 115200 raw -echo
cat "$PORT" >> /tmp/device.log &
echo "Logging to /tmp/device.log (PID: $!)"
undefinedMonitor Logs
监控日志
bash
undefinedbash
undefinedReal-time monitoring
Real-time monitoring
tail -f /tmp/device.log
tail -f /tmp/device.log
Filter specific patterns
Filter specific patterns
tail -f /tmp/device.log | grep -E "ERROR|WiFi|Button"
undefinedtail -f /tmp/device.log | grep -E "ERROR|WiFi|Button"
undefinedSearch for Errors
搜索错误信息
bash
undefinedbash
undefinedFind crashes and errors
Find crashes and errors
grep -E "ERROR|crash|overflow|panic|assert|Backtrace" /tmp/device.log
grep -E "ERROR|crash|overflow|panic|assert|Backtrace" /tmp/device.log
Find reboots (look for boot messages or uptime resets)
Find reboots (look for boot messages or uptime resets)
grep -E "boot:|rst:|Uptime: [0-9] sec" /tmp/device.log
undefinedgrep -E "boot:|rst:|Uptime: [0-9] sec" /tmp/device.log
undefinedDebug Workflow
调试流程
-
Clear log before reproducing issue:bash
> /tmp/device.log -
Reproduce the issue
-
Analyze captured logs:bash
cat /tmp/device.log
-
复现问题前清空日志:bash
> /tmp/device.log -
复现问题
-
分析捕获的日志:bash
cat /tmp/device.log
Common Baud Rates
常见波特率
| Device | Baud Rate |
|---|---|
| ESP32 (default) | 115200 |
| ESP32 (fast) | 460800 |
| Arduino | 9600 |
| STM32 | 115200 |
| 设备 | 波特率 |
|---|---|
| ESP32(默认) | 115200 |
| ESP32(高速) | 460800 |
| Arduino | 9600 |
| STM32 | 115200 |
Stop Logging
停止日志记录
bash
pkill -f "cat /dev/cu.usbmodem"
pkill -f "cat /dev/ttyUSB"bash
pkill -f "cat /dev/cu.usbmodem"
pkill -f "cat /dev/ttyUSB"Troubleshooting
故障排除
- Port not found: Check USB connection, try
ls /dev/cu.* /dev/tty.* - Permission denied: Add user to group (Linux)
dialout - Garbled output: Wrong baud rate
- 未找到端口:检查USB连接,尝试执行命令
ls /dev/cu.* /dev/tty.* - 权限不足:将用户添加到用户组(Linux系统)
dialout - 输出乱码:波特率设置错误