【问题标题】:What is the correct usage of TraceSource across a solution?TraceSource 在解决方案中的正确用法是什么?
【发布时间】:2017-03-08 21:09:45
【问题描述】:

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

private static Logger Logger = LogManager.GetCurrentClassLogger();

then 需要这样的语句:

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

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

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

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

【问题讨论】:

  • 如果你只想把它归结为基础,那么我建议这个链接:blog.stephencleary.com/2010/12/…
  • @BentTranberg - 很好,谢谢。看起来你会在大多数情况下按班级进行,如果你希望能够打开/关闭更大范围的日志记录,可能会按模块进行

标签: c# logging system.diagnostics tracesource


【解决方案1】:

随便用

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>

【讨论】:

    猜你喜欢
    • 2014-04-08
    • 2016-06-02
    • 2016-11-25
    • 2020-08-07
    • 2012-10-10
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多