如何在 windows 中捕获电子应用程序的标准输出流?

How to capture the stdout stream of an electron application in windows?

我有一个标准的 electron 应用程序(基于 electron-prebuilt),它应该使用以下命令写入标准输出:(在我的项目 main.js 中)

process.stdout.write('stdout write test')

当我从 powershell 启动应用程序并将输出重定向到 txt 文件时,我看到终端 window 中按预期显示的字符串:

> .\App.exe > log.txt

stdout write test

但是当我打开 log.txt 它是一个空白文件。我错过了什么?

编辑:澄清 Ansgar Wiechers 的正确答案:在 windows 命令提示符下,我需要 运行 以下命令:

set ELECTRON_NO_ATTACH_CONSOLE=true

这导致 console.log process.stdout.write 被定向到 windows' stdout 流。

如果你 运行 .\App.exe > log.txt 并且你可以在控制台中看到输出字符串,这意味着该字符串没有在第一时间写入 STDOUT(PowerShell 术语中的成功输出流)地方。

显然,Electron 开发人员决定将 stdout 直接附加到控制台而不是实际的 STDOUT(请参阅 issue #4552). If I understand the discussion there correctly you can set the environment variable ELECTRON_NO_ATTACH_CONSOLE 以避免这种行为。