繁体   English   中英

如何将 System.Diagnostics.Trace 和 System.Diagnostics.Debug 消息记录到 NLog 文件?

[英]How to log System.Diagnostics.Trace and System.Diagnostics.Debug messages to NLog file?

我正在支持一个大型的旧应用程序。 该代码使用 NLog 以及Debug.WriteLineTrace.WriteLine 我正在尝试将 Debug.WriteLine 和 Trace.WriteLine 重定向到 Nlog 文件。 所以一切都集中在一个地方。 目前,有些在输出窗口中,有些在日志文件中。

我按照这篇文章使用 NLogTraceListener

那篇文章将 System.Net 和 System.Net.Sockets 分流到日志文件。 我试过了,它有效。 我看到 System.Net 和 System.Net.Sockets 消息被记录到文件中。 这篇 SO 文章描述了相同的内容 - 并且它有效。

不起作用的是将我自己的消息从我自己的命名空间和类记录到日志文件中。

System.Diagnostics.Debug.WriteLine("This won't end up in the log file");
System.Diagnostics.Trace.WriteLine("This won't end up in the log file");

我尝试将源名称从我的应用程序更改为命名空间。 没用。 我无法让自己的 WriteLines 登录到文件。 它们仍然出现在 Visual Studio 输出窗口中。

例如:

    <system.diagnostics>
        <sources>
            <source name="MyAppNamespace" switchValue="All">
                <listeners>
                    <add name="nlog" />
                </listeners>
            </source>
        </sources>
        <sharedListeners>
            <add name="nlog" type="NLog.NLogTraceListener, NLog" />
        </sharedListeners>
    </system.diagnostics>

显式 NLog 调用记录到日志文件就好了:

NLog.LogManager.GetCurrentClassLogger().Trace("This Works");

您已将TraceSource配置为记录到 NLog,但您的跟踪语句未使用该 TraceSource。

尝试:

<system.diagnostics>
    <trace>
      <listeners>
          <add name="nlog" type="NLog.NLogTraceListener, NLog" />
      </listeners>
    </trace>
</system.diagnostics>

或者使用您配置的 TraceSource,例如:

TraceSource source = new TraceSource("MyAppNamespace");
source.TraceEvent(TraceEventType.Warning, 2, "File Test not found");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM