如何通过.NET Core中的NLog路由System.Diagnostics.TraceSource日志

时间:2016-10-14 21:35:20

标签: .net nlog .net-core

无论如何将System.Diagnostics.TraceSource日志路由到.NET Core中的NLog?使用NLog for .Net 4.5我们可以在app.config文件中设置NLog.NLogTraceListener,如本帖http://nlog-project.org/2010/09/02/routing-system-diagnostics-trace-and-system-diagnostics-tracesource-logs-through-nlog.html中所示,但我们在.net core中没有app.config了。

我设置了使用TraceSource输出日志的库,我想将它路由到NLog目标。

欢迎提出建议。

谢谢!

2 个答案:

答案 0 :(得分:2)

到目前为止,我找到的唯一方法是以编程方式进行。

根据https://msdn.microsoft.com/en-us/library/system.diagnostics.tracesource(v=vs.110).aspx的例子,

原始配置

<source name="System.Net" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch">
  <listeners>
    <add name="nlog" />
  </listeners>
</source>

看起来像这样:

static TraceSource ts = new TraceSource("System.Net");
SourceSwitch sourceSwitch = new SourceSwitch("SourceSwitch", "Verbose");
ts.Switch = sourceSwitch;
int idxConsole = ts.Listeners.Add(new NLog.NLogTraceListener());
ts.Listeners[idxConsole].Name = "nlog";

我用NLog测试这个,但我有一个自定义跟踪监听器,它对我有用。

答案 1 :(得分:0)

尝试一下。它为我工作。 System.Diagnostics.Trace.Listeners.Add(new NLog.NLogTraceListener());

当心NLog.config中的“ target xsi:type =“ Trace” ...“。 这会导致StackOverFlow异常。