从节点收听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常量”)。