我编写了示例应用程序,将日志打印到ConsoleTraceListener
。
根据MSDN,ConsoleTraceListener
应重定向到标准输出。我spawn
此节点来自节点并尝试收听stdout
,但无法获取相关信息。
知道怎么解决这个问题吗?我想将TraceListener
流式传输到节点
C#:
Trace.Listeners.Add(new ConsoleTraceListener(true));
Trace.AutoFlush = true;
Console.WriteLine("This comes out");
Trace.WriteLine("oops");
Trace.TraceInformation("Getting lost");
Thread.Sleep(5000);
Console.WriteLine("Stopping comes out");
节点:
let proc = ps.spawn("sample.exe");
proc.stdout.on('data', (c) => {
console.log(c.toString());
});
proc.stderr.on('err', (c) => {
console.log(c.toString());
});
答案 0 :(得分:1)
首先,由于您传递给ConsoleTraceListener
的参数,您重定向到stderr而不是stdout:
Trace.Listeners.Add(new ConsoleTraceListener(useErrorStream: true));// < note true here
要重定向到stdout - 将其更改为false:
Trace.Listeners.Add(new ConsoleTraceListener(useErrorStream: false));
然后您将在node.js应用中看到输出。 如果您想查看stderr,请更改您的node.js应用程序:
proc.stderr.on('data', (c) => {
console.log(c.toString());
});
然后,即使使用原始的.NET应用程序写入stderr,您也会看到输出。
如果上述方法无效 - 请检查是否定义了TRACE编译时常量(项目属性&gt;复选框&#34;定义TRACE常量&#34;)。