원클릭으로
maa-logging
MaaFramework C++ 日志宏用法指南。用于写 C++ MaaFramework 扩展、Custom 组件或工具代码时使用 LogInfo/LogError/LogWarn/LogDebug/LogTrace、VAR、容器输出和自定义类型日志。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
MaaFramework C++ 日志宏用法指南。用于写 C++ MaaFramework 扩展、Custom 组件或工具代码时使用 LogInfo/LogError/LogWarn/LogDebug/LogTrace、VAR、容器输出和自定义类型日志。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
调试和优化 MaaFramework Pipeline JSON。用于对照 schema 验证配置,检测缺失引用、循环依赖、孤立节点、命名与行为不匹配、ROI/阈值问题,并给出可靠性、性能和可维护性改进建议。触发词包括 debug pipeline、validate pipeline、optimize pipeline、pipeline error。
MaaFramework Pipeline JSON 编写指南。用于编写、修改或审查 Pipeline JSON,设计节点流程,使用 TemplateMatch/OCR/ColorMatch/Custom 识别或 Click/Swipe/Custom 动作,并检查 MaaFramework 项目的通用 Pipeline 可靠性。
MDA 项目专属开发指南。用于在 MDA 中编写或审查 MaaFramework Pipeline、Project Interface 任务、locale、go-service 组件时补充项目结构、业务域、命名习惯和现有任务选项示例。与通用 pipeline-guide、pipeline-debug、generate-pi-task、go-service-guide 配合使用。
分析 Windows 崩溃转储文件(.dmp),诊断 MaaFramework / MXU 项目及其依赖项的崩溃。用于 issue 日志包或附件中发现 .dmp 文件,或用户要求分析 DMP / 崩溃转储时。
根据 MaaFramework Pipeline 定义生成或更新 Project Interface 任务 JSON。用于创建、编辑或扩展 assets/tasks/ 下的任务文件,将 Pipeline 节点映射为用户可配置选项(switch/select/checkbox/input)并绑定 pipeline_override。
分析 MDA 公开 Issue、日志包或本地日志。用于 `https://github.com/1204244136/MDA/issues/...`、`#1234`、MDA 日志压缩包、识别失败、任务卡死、控制器差异、Pipeline/Agent/MXU 问题。会从 maafw.log、maafw.bak.*.log、go-service.log、mxu-tauri.log、mxu-web-*.log、mxu-agent*.log、config/*、on_error/ 中筛选证据,并结合 MDA、MaaFramework、MXU 代码和文档判断根因。
| name | maa-logging |
| description | MaaFramework C++ 日志宏用法指南。用于写 C++ MaaFramework 扩展、Custom 组件或工具代码时使用 LogInfo/LogError/LogWarn/LogDebug/LogTrace、VAR、容器输出和自定义类型日志。 |
头文件:<MaaUtils/Logger.h>
| 宏 | 级别 / 用途 |
|---|---|
LogFatal | 致命错误 |
LogError | 不可恢复或当前操作失败的错误 |
LogWarn | 可恢复异常、环境风险、降级行为 |
LogInfo | 关键状态、任务阶段、初始化结果 |
LogDebug | 调试信息、中间结果 |
LogTrace | 高频或详细数据 |
LogFunc | 函数作用域 enter/leave 和耗时 |
VAR(x) | 格式化为 [x=value] |
VAR_VOIDP(x) | 将指针转为 void* 后输出 |
使用 << 流式输出,各片段自动分隔:
LogInfo << "matched" << VAR(zone_id) << VAR(x) << VAR(y) << VAR(score);
LogError << "locator init failed";
避免:
LogInfo << "position: " + std::to_string(x) + ", " + std::to_string(y);
LogInfo << std::format("position: ({}, {})", x, y);
std::format 可用于一般字符串构建,但日志中优先直接输出字段。
#include <MaaUtils/Logger.h>
MaaBool MyRecognitionRun(MaaContext* context, MaaTaskId task_id, const char* node_name)
{
LogInfo << VAR(context) << VAR(task_id) << VAR(node_name);
if (context == nullptr) {
LogError << "context is null";
return MAA_FALSE;
}
LogDebug << "recognition input prepared" << VAR(task_id);
return MAA_TRUE;
}
LogInfo << "phase transition" << VAR(from_phase) << VAR(to_phase) << VAR(reason);
LogDebug << "match result" << VAR(score) << VAR(x) << VAR(y) << VAR(width) << VAR(height);
vector、set、map<string, T> 等 STL 容器可以直接 <<,会自动序列化为 JSON:
std::vector<std::string> names = { "a", "b", "c" };
LogInfo << "names" << names;
std::map<std::string, int> config;
LogInfo << "config" << config;
不需要手写循环打印容器内容。
给结构体加 MEO_TOJSON(...) 或 MEO_JSONIZATION(...),即可直接输出:
struct LocateOutput {
int status = 0;
std::string message;
int x = 0;
int y = 0;
MEO_JSONIZATION(status, message, MEO_OPT x, MEO_OPT y)
};
LogInfo << VAR(output);
容器嵌套也可以工作:
std::vector<LocateOutput> results;
LogInfo << VAR(results);
| 场景 | 级别 |
|---|---|
| 初始化成功/失败、关键状态变更 | LogInfo |
| 任务阶段切换、最终识别结果 | LogInfo |
| 中间分数、候选数量、调试变量 | LogDebug |
| 完整矩阵、向量、逐帧详细数据 | LogTrace |
| 可恢复异常、环境风险 | LogWarn |
| 当前操作无法继续 | LogError |
| 进程级不可恢复错误 | LogFatal |
LogInfo。LogTrace。LogInfo 或 LogDebug。LogStream::stream 通常按优先级尝试:
json::value → dumps() 输出。json::array → dumps() 输出。json::object → dumps() 输出。operator<< → 直接流输出。如果遇到 “Unsupported type”,给类型加 MEO_TOJSON、MEO_JSONIZATION,或特化 json::ext::jsonization<T>。
VAR(x) 输出。LogInfo。LogError 或合理级别日志。