从 Node 监听 ConsoleTraceListener 日志
Listening to ConsoleTraceListener logs from Node
我已经编写了将日志打印到 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());
});
然后,即使是写入 stderr 的原始 .NET 应用程序,您也会看到输出。
如果上述方法没有帮助 - 检查您是否定义了 TRACE 编译时常量(项目属性 > 复选框 "Define TRACE constant")。
我已经编写了将日志打印到 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
:
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());
});
然后,即使是写入 stderr 的原始 .NET 应用程序,您也会看到输出。
如果上述方法没有帮助 - 检查您是否定义了 TRACE 编译时常量(项目属性 > 复选框 "Define TRACE constant")。