MaaAssistantArknights / maa-cli

MAA命令行工具 | A simple CLI for MAA.
GNU Affero General Public License v3.0
40 stars 8 forks source link

我写了一个程序调用maa-cli,为什么输出几乎都在标准错误流里面? #339

Closed tsctsc6 closed 1 month ago

tsctsc6 commented 1 month ago

{C1668AEA-0A4F-49EA-B717-2212C4996042} {8293B67D-CF56-4CA2-A46C-0F1AB875FDD0}

wangl-cc commented 1 month ago

通常命令行工具的标准输出一般用来输出“结果”,比如 maa dir xxx, versionmaa run xxx 最后的 Summary 都是输出到标准输出的,而日志或者其他相关的信息被最终到标准错误。这样的主要原因是为了防止日志信息被捕获。

比如以下用来获取 MaaCore 版本信息的命令里日志被输出到 stderr,而版本被输出到 stdout:

$ MAA_LOG=Debug maa version maa-core
[2024-10-25 12:01:11 DEBUG] Loading MaaCore from: /Users/loong/Library/Application Support/com.loong.maa/lib # Stderr
MaaCore v5.8.0-beta.2 # Stdout

这样确保 MAA_CORE_VERSION=$(maa version maa-core) 这样的任务可以正确的捕获到版本信息而不被日志信息污染。如果你想处理日志的等级,目前你可以考虑通过解析每一条日志的前缀来获得。此外 maa-cli 预计之后会提供一个 RPC 模式,到时候外部程序就可以更方便的处理日志了。

tsctsc6 commented 1 month ago

原来如此

tsctsc6 commented 1 month ago

读取传统命令行标准输出还有一点就是,不太能读取到丰富多彩的字体颜色...特别是有些改变控制台字体颜色,是通过改变控制台本身来实现的,而不是通过ASNI控制码来实现的。