从节点收听ConsoleTraceListener日志

我已经写了示例应用程序打印日志到ConsoleTraceListener

根据MSDN , ConsoleTraceListener应该redirect到标准输出。 我从节点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的参数,您redirect到stderr而不是stdout:

 Trace.Listeners.Add(new ConsoleTraceListener(useErrorStream: true));// < note true here 

redirect到stdout – 将其改为false:

 Trace.Listeners.Add(new ConsoleTraceListener(useErrorStream: false)); 

然后你会看到你的node.js应用程序的输出。 如果你想看到stderr,像这样改变你的node.js应用程序:

 proc.stderr.on('data', (c) => { console.log(c.toString()); }); 

然后,即使使用写入到stderr的原始.NET应用程序,也会看到输出。

如果上面的内容不起作用 – 请检查是否定义了TRACE编译时常量(项目属性>checkbox“定义TRACE常量”)。