无论如何将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目标。
欢迎提出建议。
谢谢!
答案 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异常。