我最近在研究TraceSource的文档.Microsift说TraceSource是一种新方法,应该使用而不是旧的Trace类.
// create single TraceSource instance to be used for logging
static TraceSource ts = new TraceSource("TraceTest");
// somewhere in the code
ts.TraceEvent(TraceEventType.Warning, 2, "File Test not found");
现在我的问题.你有大型项目,有几个程序集,你有很多类.假设您想跟踪跨类传播的特定功能.明显的想法是你需要创建一个特定的TraceSource.
1)要使用Tracesource,我需要先创建实例.什么是MS考虑跨各种类或程序集共享此实例?我应该创建一个具有静态单例属性的虚拟类吗?在那种情况下你在做什么
2)为什么我需要TraceSource实例?配置文件中描述了每个属性.基于Trace类的旧逻辑不需要某些实例,只提供了使用静态方法的方法.
我正在尝试使用System.Diagnostics做一些非常基本的日志记录.我想我会使用框中的内容,而不是像Log4Net或EntLib那样使用额外的依赖.
我已经全部成立,跟踪工作非常好.代码段:
Trace.TraceInformation("Hello World")
App.config中:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="TraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Trace.log" traceOutputOptions="DateTime" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>
而我的小"Hello World"在我的Trace.log文件中显示得很好.但现在我想关闭跟踪,所以我深入了解MSDN并找到如何:配置跟踪开关
.我添加了<switches>元素,现在我的app.config看起来像这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="TraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Trace.log" traceOutputOptions="DateTime" />
        <remove name="Default" />
      </listeners>
    </trace>
    <switches>
      <add name="Data" value="0" />
    </switches>
  </system.diagnostics>
</configuration>
本value="0"应关闭跟踪-至少如果你然后按照如何:创建和初始化跟踪开关,它告诉您添加这行代码:
Dim dataSwitch As New BooleanSwitch("Data", "DataAccess module")
这对我来说没有意义:我只需要BooleanSwicth通过.config文件声明一个能够管理(禁用)跟踪的实例?我应该...在某处使用 ......对象? …
在我的app.config中,我想设置3个跟踪级别(交换机?):详细,警告和无.在代码的调试版本中,我想要在我想要警告的版本中激活详细开关.在特殊情况下,我的应用程序用户可以修改配置文件以禁用所有跟踪.
我希望在控制台上输出调试跟踪,而发布只跟踪到日志文件.
我写了以下内容:
[...]
<system.diagnostics>
        <sources>
            <!-- This section defines the logging configuration for My.Application.Log -->
          <source name="debug" switchName="debug">
            <listeners>
              <add name="FileLog"/>
              <add name="console"/>
            </listeners>
          </source>
          <source name="release" switchName="release">
            <listeners>
              <add name="FileLog"/>
            </listeners>
          </source>
          <source name="silent" switchName="none">
            <listeners/>
          </source>
        </sources>
        <switches>
            <add name="debug" value="Verbose"/>
            <add name="release" value="Warning"/>
            <add name="none" value="Off"/>
        </switches>
        <!--<sharedListeners>
            <add name="FileLog" type="System.Diagnostics.TextWriterTraceListener"  traceOutputOptions="DateTime" initializeData="felix.log"/>
            <add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
        </sharedListeners>-->
        <trace autoflush="false" indentsize="4">
          <listeners>
              <add name="FileLog" type="System.Diagnostics.TextWriterTraceListener" traceOutputOptions="DateTime" initializeData="felix.log"/>
              <add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false"/>
              <remove name="Default"/>
          </listeners>
        </trace> …如果一个应用程序将其所有活动数据写入一个日志文件中,是否有使用多个TraceSource的用途?我只是对代码中需要多个TraceSource的用例感到好奇.