Flutter/Dart - 将所有子进程的输出打印到标准输出
Flutter/Dart - Print output of all child processes to stdout
我正在开发一个 Flutter 桌面应用程序,它在某些时候 运行 是 Process
。对于这个过程,我想读取输出并根据它在 Flutter 中做一些事情。我遇到的问题是,并非所有输出都通过 process.stdout
显示,即我也想阅读的一些 INFO
日志。
这是(非常简单的)代码:
Process process = await Process.start(
"cwltool",
[
"--verbose",
"Oesophageal-varices.cwl",
"Oesophageal-varices-inputs.yml"
],
);
await process.stdout
.transform(utf8.decoder)
.forEach(print)
有了这个,输出只有:
{
"cases": {
"location": "file:///somelocation/oesophageal-varices-cases.csv",
"basename": "oesophageal-varices-cases.csv",
"class": "File",
"checksum": "sha1[=12=]b3f04bbeaac24499166fd56d93ad8bd6acb9ca8",
"size": 670,
"path": "/somelocation/oesophageal-varices-cases.csv"
}
}
但是当我 运行 在终端中执行相同的过程时,它还会打印 INFO
日志,这是我在 Flutter 中迫切需要的。我怀疑下面的 python 子进程完成的日志记录没有传递给 process.stdout
,因此它们没有打印。
我如何使用 Dart 访问 INFO
日志?
正如 pskink 评论的那样,有趣的是,日志将 process.stderr
。
我正在开发一个 Flutter 桌面应用程序,它在某些时候 运行 是 Process
。对于这个过程,我想读取输出并根据它在 Flutter 中做一些事情。我遇到的问题是,并非所有输出都通过 process.stdout
显示,即我也想阅读的一些 INFO
日志。
这是(非常简单的)代码:
Process process = await Process.start(
"cwltool",
[
"--verbose",
"Oesophageal-varices.cwl",
"Oesophageal-varices-inputs.yml"
],
);
await process.stdout
.transform(utf8.decoder)
.forEach(print)
有了这个,输出只有:
{
"cases": {
"location": "file:///somelocation/oesophageal-varices-cases.csv",
"basename": "oesophageal-varices-cases.csv",
"class": "File",
"checksum": "sha1[=12=]b3f04bbeaac24499166fd56d93ad8bd6acb9ca8",
"size": 670,
"path": "/somelocation/oesophageal-varices-cases.csv"
}
}
但是当我 运行 在终端中执行相同的过程时,它还会打印 INFO
日志,这是我在 Flutter 中迫切需要的。我怀疑下面的 python 子进程完成的日志记录没有传递给 process.stdout
,因此它们没有打印。
我如何使用 Dart 访问 INFO
日志?
正如 pskink 评论的那样,有趣的是,日志将 process.stderr
。