我编写了示例应用程序,将日志打印到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());
});
最佳答案
首先,由于传递给ConsoleTraceListener
的参数,您重定向到stderr而不是stdout:
Trace.Listeners.Add(new ConsoleTraceListener(useErrorStream: true));// < note true here
重定向到标准输出-将其更改为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编译时常量(项目属性>复选框“定义TRACE常量”)。
关于c# - 从Node监听ConsoleTraceListener日志,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42482873/