14

假设您在整个应用程序中都有 C# 跟踪消息。就像是:

Trace.TraceInformation("Service Started"); 

如何自动将其记录到 nLog 目标,而无需向所有具有跟踪消息的类添加如下代码?

using NLog;
private static Logger logger = LogManager.GetCurrentClassLogger();

有没有办法在不包括 .NET Framework 本身产生的跟踪的情况下做到这一点,本文演示了如何做到这一点?

4

3 回答 3

9

这适用于没有明确来源的情况。

  <system.diagnostics>
      <trace autoflush="true" indentsize="4">
        <listeners>
          <add name="MyNLogTraceListener" type="NLog.NLogTraceListener, NLog" />
          <remove name="Default" />
        </listeners>
      </trace>
  </system.diagnostics>
于 2013-08-12T03:05:54.790 回答
6

您可以使用 NLog 的NLogTraceListener

为了完整起见,这里是 System.Diagnostics 配置(来自上面的链接)来指定 NLogTraceListener:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <sources>
      <source name="System.Net" switchValue="All">
        <listeners>
          <add name="nlog" />
        </listeners>
      </source>
      <source name="System.Net.Sockets" switchValue="All">
        <listeners>
          <add name="nlog" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add name="nlog" type="NLog.NLogTraceListener, NLog" />
    </sharedListeners>
  </system.diagnostics>
</configuration>

您还需要配置 NLog 以告诉它在从 System.Diagnostics.Trace 移动到 NLog 后如何写入信息:

<nlog>
  <targets>
    <target name="console" type="ColoredConsole" layout="${longdate} ${windows-identity} ${message}" />
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="console" />
  </rules>
</nlog>
于 2012-11-07T15:46:08.657 回答
0

您可以在App.config

    <system.diagnostics>

    <sources>
      <source name="System" switchValue="All">
        <listeners>
          <add name="nlog" />
        </listeners>
      </source>
    </sources>

    <sharedListeners>
      <add name="nlog" type="NLog.NLogTraceListener, NLog" />
    </sharedListeners>

    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="nlog" />
        <remove name="Default" />
      </listeners>
    </trace>

  </system.diagnostics>
于 2019-04-13T23:12:33.797 回答