TraceSource在整个解决方案中的正确用法是什么?

时间:2017-03-08 21:09:45

标签: c# logging system.diagnostics tracesource

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

private static Logger Logger = LogManager.GetCurrentClassLogger();

然后按要求发表这样的陈述:

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

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

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

注意:由于此代码的部署方式,我不能拥有配置文件,我必须以编程方式完成所有操作。

1 个答案:

答案 0 :(得分:0)

只需使用

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

以及其他课程

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

然后使用config分配监听器

<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>