0

我之前没有使用过 System.Diagnostics.TraceSource 包,所以我想确保我正确地实现它。过去我使用过 NLog(在 log4net 之前),您在配置文件中(或以编程方式)配置设置,并在每个类中声明:

private static Logger Logger = LogManager.GetCurrentClassLogger();

然后根据需要这样的语句:

Logger.Error("some message", exc);

但是使用 TraceSource,您可以创建一个新的 TraceSource,设置它的属性并分配您的侦听器,然后将您的消息写入它。

我是否为每个类(如 NLog)创建一个 TraceSource 实例?或者我是否每个应用程序都有一个所有类都使用的应用程序?如果是前者,似乎至少我应该将 TraceSource 的创建集中到工厂或其他东西中,以便简化代码,并且每次我需要使用它时我都不必设置设置、侦听器等。这里的正确用法是什么?

注意:由于此代码将如何部署的性质,我无法拥有配置文件,我必须以编程方式完成所有操作。

4

1 回答 1

0

只需使用

class DracBlahBlah
{
  private static readonly TraceSource = new TraceSource("deathtoexecutives", SourceLevel.Error);
}

在其他班级

class werewolf
{
  private static readonly TraceSource = new TraceSource("deathtoexecutives", SourceLevel.Error);
}

然后使用配置分配侦听器

<system.diagnostics>
  <sharedListeners>
    <add name="p0rn" type="p0rn.Tracelistener, super.bad.crazytown" />
  </sharedListeners>

  <sources>
    <source name="deathtoexecutives" switchValue="Verbose">
      <listeners>
        <add name="p0rn" />
      </listeners>
    </source>
于 2018-10-17T04:32:08.610 回答