#pragma once #include "dbg_log.h" #define lftpd_log_error(format, ...) DBG_ERROR("[FTP] " format, ##__VA_ARGS__) #define lftpd_log_info(format, ...) DBG_INFO("[FTP] " format, ##__VA_ARGS__) /* * 对端行为级别(既不是缺陷,也不该长得像缺陷)—— * 控制连接被对端关闭 / 客户端连上就走 / PASV 之后不来数据连接 / 网络重建导致 * 监听重建,这些都是**外部输入决定的正常收尾**。它们原先记 error 级,代价实测: * ① 本仓 @test 的 Forbidden 标记含 `[ERR]`(它同时是四个 Fault 崩溃日志的前缀), * 于是"FileZilla 关了个窗口"就能把一次启动测试判 FAIL;② 任何人对着 21 端口 * 连一下就走,就能无限制造固件级 ERROR 日志(日志面 + 门禁面都能被外部驱动)。 * 所以这一类降为 info,并单独起一个名字,让"谁是真故障"在读代码时就一目了然。 * 完整划分表 → docs/架构设计/STM32F4-Base存储架构说明.md §10.3。 * * ⚠ **传输未完成不在这一级**:`DOWNLOAD/UPLOAD FAILED` 仍记 error——对端中途退出 * 确实让一次传输没走完,那是数据完整性事件,值得留痕。 */ #define lftpd_log_peer(format, ...) DBG_INFO("[FTP] " format, ##__VA_ARGS__) #define lftpd_log_debug(format, ...)