TraceSource Klasse

Definition

Stellt eine Gruppe von Methoden und Eigenschaften bereit, mit denen Anwendungen die Ausführung von Code verfolgen und Ablaufverfolgungsmeldungen ihrer jeweiligen Quelle zuordnen können.Provides a set of methods and properties that enable applications to trace the execution of code and associate trace messages with their source.

public ref class TraceSource
public class TraceSource
type TraceSource = class
Public Class TraceSource
Vererbung
TraceSource

Beispiele

Im folgenden Codebeispiel wird die Verwendung der- TraceSource Klasse zum Weiterleiten von Ablauf Verfolgungen an Listener veranschaulicht.The following code example shows the use of the TraceSource class to forward traces to listeners. Im Beispiel wird auch die Verwendung von Switch und Filtern veranschaulicht.The example also demonstrates switch and filter usage.

/////////////////////////////////////////////////////////////////////////////////
//
// NAME     TraceSource2.cpp : main project file
//
/////////////////////////////////////////////////////////////////////////////////



// The following configuration file can be used with this sample.
// When using a configuration file #define ConfigFile.
//            <source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch" >
//                    <add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
//                    <remove name ="Default" />
//            <!-- You can set the level at which tracing is to occur -->
//            <add name="SourceSwitch" value="Warning" />
//            <!-- You can turn tracing off -->
//            <!--add name="SourceSwitch" value="Off" -->
//        <trace autoflush="true" indentsize="4"></trace>

#define TRACE
//#define ConfigFile

#using <System.dll>

using namespace System;
using namespace System::Collections;
using namespace System::Diagnostics;
using namespace System::Reflection;
using namespace System::IO;
using namespace System::Security::Permissions;

void DisplayProperties(TraceSource^ ts);  // Forward Declaration


int main()
{
    TraceSource^ ts = gcnew TraceSource("TraceTest");

    try
        {
        // Initialize trace switches.
#if(!ConfigFile)
        SourceSwitch^ sourceSwitch = gcnew SourceSwitch("SourceSwitch", "Verbose");
        ts->Switch = sourceSwitch;
        int idxConsole = ts->Listeners->Add(gcnew System::Diagnostics::ConsoleTraceListener());
        ts->Listeners[idxConsole]->Name = "console";
#endif
        DisplayProperties(ts);
        ts->Listeners["console"]->TraceOutputOptions |= TraceOptions::Callstack;
        ts->TraceEvent(TraceEventType::Warning, 1);
        ts->Listeners["console"]->TraceOutputOptions = TraceOptions::DateTime;
        // Issue file not found message as a warning.
        ts->TraceEvent(TraceEventType::Warning, 2, "File Test not found");
        // Issue file not found message as a verbose event using a formatted string.
        ts->TraceEvent(TraceEventType::Verbose, 3, "File {0} not found.", "test");
        // Issue file not found message as information.
        ts->TraceInformation("File {0} not found.", "test");
        ts->Listeners["console"]->TraceOutputOptions |= TraceOptions::LogicalOperationStack;
        // Issue file not found message as an error event.
        ts->TraceEvent(TraceEventType::Error, 4, "File {0} not found.", "test");

        // Test the filter on the ConsoleTraceListener.
        ts->Listeners["console"]->Filter = gcnew SourceFilter("No match");
        ts->TraceData(TraceEventType::Error, 5,
            "SourceFilter should reject this message for the console trace listener.");
        ts->Listeners["console"]->Filter = gcnew SourceFilter("TraceTest");
        ts->TraceData(TraceEventType::Error, 6,
            "SourceFilter should let this message through on the console trace listener.");
        ts->Listeners["console"]->Filter = nullptr;

        // Use the TraceData method. 
        ts->TraceData(TraceEventType::Warning, 7, gcnew array<Object^>{ "Message 1", "Message 2" });

        // Activity tests.
        ts->TraceEvent(TraceEventType::Start, 9, "Will not appear until the switch is changed.");
        ts->Switch->Level = SourceLevels::ActivityTracing | SourceLevels::Critical;
        ts->TraceEvent(TraceEventType::Suspend, 10, "Switch includes ActivityTracing, this should appear");
        ts->TraceEvent(TraceEventType::Critical, 11, "Switch includes Critical, this should appear");
        ts->Flush();
        ts->Close();
        Console::WriteLine("Press enter key to exit.");
        Console::Read();
        }
    catch (Exception ^e)
        {
         // Catch any unexpected exception.
         Console::WriteLine("Unexpected exception: " + e->ToString());
         Console::Read();
        }
}


void DisplayProperties(TraceSource^ ts)
{
    Console::WriteLine("TraceSource name = " + ts->Name);
//    Console::WriteLine("TraceSource switch level = " + ts->Switch->Level);         // error C3063: operator '+': all operands must have the same enumeration type
    Console::WriteLine("TraceSource switch level = {0}", ts->Switch->Level);         //  SUCCESS:  does compile.  Weird
    Console::WriteLine("TraceSource Attributes Count " + ts->Attributes->Count);     //  SUCCESS:  also compiles.  Really weird
    Console::WriteLine("TraceSource Attributes Count = {0}", ts->Attributes->Count); //  SUCCESS:  okay, I give up.  Somebody call me a cab.

    Console::WriteLine("TraceSource switch = " + ts->Switch->DisplayName);
    array<SwitchAttribute^>^ switches = SwitchAttribute::GetAll(TraceSource::typeid->Assembly);

    for (int i = 0; i < switches->Length; i++)
        { 
        Console::WriteLine("Switch name = " + switches[i]->SwitchName);
        Console::WriteLine("Switch type = " + switches[i]->SwitchType);
        }

#if(ConfigFile)
            // Get the custom attributes for the TraceSource.
            Console::WriteLine("Number of custom trace source attributes = "
                + ts.Attributes.Count);
            foreach (DictionaryEntry de in ts.Attributes)
                Console::WriteLine("Custom trace source attribute = "
                    + de.Key + "  " + de.Value);
            // Get the custom attributes for the trace source switch.
            foreach (DictionaryEntry de in ts.Switch.Attributes)
                Console::WriteLine("Custom switch attribute = "
                    + de.Key + "  " + de.Value);
#endif
       Console::WriteLine("Number of listeners = " + ts->Listeners->Count);
       for each (TraceListener ^ traceListener in ts->Listeners)
           {
           Console::Write("TraceListener: " + traceListener->Name + "\t");
           // The following output can be used to update the configuration file.
           Console::WriteLine("AssemblyQualifiedName = " +
               (traceListener->GetType()->AssemblyQualifiedName));
           }
}
// The following configuration file can be used with this sample.
// When using a configuration file #define ConfigFile.
//            <source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch" >
//                    <add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
//                    <remove name ="Default" />
//            <!-- You can set the level at which tracing is to occur -->
//            <add name="SourceSwitch" value="Warning" />
//            <!-- You can turn tracing off -->
//            <!--add name="SourceSwitch" value="Off" -->
//        <trace autoflush="true" indentsize="4"></trace>
#define TRACE
//#define ConfigFile

using System;
using System.Collections;
using System.Diagnostics;
using System.Reflection;
using System.IO;
using System.Security.Permissions;

namespace Testing
{
    class TraceTest
    {
        // Initialize the trace source.
        static TraceSource ts = new TraceSource("TraceTest");
        [SwitchAttribute("SourceSwitch", typeof(SourceSwitch))]
        static void Main()
        {
            try
            {
                // Initialize trace switches.
#if(!ConfigFile)
                SourceSwitch sourceSwitch = new SourceSwitch("SourceSwitch", "Verbose");
                ts.Switch = sourceSwitch;
                int idxConsole = ts.Listeners.Add(new System.Diagnostics.ConsoleTraceListener());
                ts.Listeners[idxConsole].Name = "console";
#endif
                DisplayProperties(ts);
                ts.Listeners["console"].TraceOutputOptions |= TraceOptions.Callstack;
                ts.TraceEvent(TraceEventType.Warning, 1);
                ts.Listeners["console"].TraceOutputOptions = TraceOptions.DateTime;
                // Issue file not found message as a warning.
                ts.TraceEvent(TraceEventType.Warning, 2, "File Test not found");
                // Issue file not found message as a verbose event using a formatted string.
                ts.TraceEvent(TraceEventType.Verbose, 3, "File {0} not found.", "test");
                // Issue file not found message as information.
                ts.TraceInformation("File {0} not found.", "test");
                ts.Listeners["console"].TraceOutputOptions |= TraceOptions.LogicalOperationStack;
                // Issue file not found message as an error event.
                ts.TraceEvent(TraceEventType.Error, 4, "File {0} not found.", "test");
                // Test the filter on the ConsoleTraceListener.
                ts.Listeners["console"].Filter = new SourceFilter("No match");
                ts.TraceData(TraceEventType.Error, 5,
                    "SourceFilter should reject this message for the console trace listener.");
                ts.Listeners["console"].Filter = new SourceFilter("TraceTest");
                ts.TraceData(TraceEventType.Error, 6,
                    "SourceFilter should let this message through on the console trace listener.");
                ts.Listeners["console"].Filter = null;
                // Use the TraceData method. 
                ts.TraceData(TraceEventType.Warning, 7, new object());
                ts.TraceData(TraceEventType.Warning, 8, new object[] { "Message 1", "Message 2" });
                // Activity tests.
                ts.TraceEvent(TraceEventType.Start, 9, "Will not appear until the switch is changed.");
                ts.Switch.Level = SourceLevels.ActivityTracing | SourceLevels.Critical;
                ts.TraceEvent(TraceEventType.Suspend, 10, "Switch includes ActivityTracing, this should appear");
                ts.TraceEvent(TraceEventType.Critical, 11, "Switch includes Critical, this should appear");
                ts.Flush();
                ts.Close();
                Console.WriteLine("Press any key to exit.");
                Console.Read();
            }
            catch (Exception e)
            {
                // Catch any unexpected exception.
                Console.WriteLine("Unexpected exception: " + e.ToString());
                Console.Read();
            }
        }
        public static void DisplayProperties(TraceSource ts)
        {
            Console.WriteLine("TraceSource name = " + ts.Name);
            Console.WriteLine("TraceSource switch level = " + ts.Switch.Level);
            Console.WriteLine("TraceSource switch = " + ts.Switch.DisplayName);
            SwitchAttribute[] switches = SwitchAttribute.GetAll(typeof(TraceTest).Assembly);
            for (int i = 0; i < switches.Length; i++)
            {
                Console.WriteLine("Switch name = " + switches[i].SwitchName);
                Console.WriteLine("Switch type = " + switches[i].SwitchType);
            }
#if(ConfigFile)
            // Get the custom attributes for the TraceSource.
            Console.WriteLine("Number of custom trace source attributes = "
                + ts.Attributes.Count);
            foreach (DictionaryEntry de in ts.Attributes)
                Console.WriteLine("Custom trace source attribute = "
                    + de.Key + "  " + de.Value);
            // Get the custom attributes for the trace source switch.
            foreach (DictionaryEntry de in ts.Switch.Attributes)
                Console.WriteLine("Custom switch attribute = "
                    + de.Key + "  " + de.Value);
#endif
            Console.WriteLine("Number of listeners = " + ts.Listeners.Count);
            foreach (TraceListener traceListener in ts.Listeners)
            {
                Console.Write("TraceListener: " + traceListener.Name + "\t");
                // The following output can be used to update the configuration file.
                Console.WriteLine("AssemblyQualifiedName = " +
                    (traceListener.GetType().AssemblyQualifiedName));
            }
        }
    }
}
' The following configuration file can be used with this sample.
' When using a configuration file #define ConfigFile.
'            <source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch" >
'                    <add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
'                    <remove name ="Default" />
'            <!-- You can set the level at which tracing is to occur -->
'            <add name="SourceSwitch" value="Warning" />
'            <!-- You can turn tracing off -->
'            <!--add name="SourceSwitch" value="Off" -->
'        <trace autoflush="true" indentsize="4"></trace>
#Const TRACE = True
'#Const ConfigFile = True

Imports System.Collections
Imports System.Diagnostics
Imports System.Reflection
Imports System.IO
Imports System.Security.Permissions



Class TraceTest
    ' Initialize the trace source.
    Private Shared ts As New TraceSource("TraceTest")
    <SwitchAttribute("SourceSwitch", GetType(SourceSwitch))> _
    Shared Sub Main()
        Try
            ' Initialize trace switches.
#If (ConfigFile = False) Then
            Dim sourceSwitch As New SourceSwitch("SourceSwitch", "Verbose")
            ts.Switch = sourceSwitch
            Dim idxConsole As New Integer()
            idxConsole = ts.Listeners.Add(New System.Diagnostics.ConsoleTraceListener())
            ts.Listeners(idxConsole).Name = "console"
#End If
            DisplayProperties(ts)
            ts.Listeners("console").TraceOutputOptions = ts.Listeners("console").TraceOutputOptions Or TraceOptions.Callstack
            ts.TraceEvent(TraceEventType.Warning, 1)
            ts.Listeners("console").TraceOutputOptions = TraceOptions.DateTime
            ' Issue file not found message as a warning.
            ts.TraceEvent(TraceEventType.Warning, 2, "File Test not found")
            ' Issue file not found message as a verbose event using a formatted string.
            ts.TraceEvent(TraceEventType.Verbose, 3, "File {0} not found.", "test")
            ' Issue file not found message as information.
            ts.TraceInformation("File {0} not found.", "test")
            ts.Listeners("console").TraceOutputOptions = ts.Listeners("console").TraceOutputOptions Or TraceOptions.LogicalOperationStack
            ' Issue file not found message as an error event.
            ts.TraceEvent(TraceEventType.Error, 4, "File {0} not found.", "test")
            ' Test the filter on the ConsoleTraceListener.
            ts.Listeners("console").Filter = New SourceFilter("No match")
            ts.TraceData(TraceEventType.Error, 5, "SourceFilter should reject this message for the console trace listener.")
            ts.Listeners("console").Filter = New SourceFilter("TraceTest")
            ts.TraceData(TraceEventType.Error, 6, "SourceFilter should let this message through on the console trace listener.")
            ts.Listeners("console").Filter = Nothing
            ' Use the TraceData method. 
            ts.TraceData(TraceEventType.Warning, 7, New Object())
            ts.TraceData(TraceEventType.Warning, 8, New Object() {"Message 1", "Message 2"})
            ' Activity tests.
            ts.TraceEvent(TraceEventType.Start, 9, "Will not appear until the switch is changed.")
            ts.Switch.Level = SourceLevels.ActivityTracing Or SourceLevels.Critical
            ts.TraceEvent(TraceEventType.Suspend, 10, "Switch includes ActivityTracing, this should appear")
            ts.TraceEvent(TraceEventType.Critical, 11, "Switch includes Critical, this should appear")
            ts.Flush()
            ts.Close()
            Console.WriteLine("Press any key to exit.")
            Console.Read()
        Catch e As Exception
            ' Catch any unexpected exception.
            Console.WriteLine("Unexpected exception: " + e.ToString())
            Console.Read()
        End Try

    End Sub

    Public Shared Sub DisplayProperties(ByVal ts As TraceSource)
        Console.WriteLine("TraceSource name = " + ts.Name)
        Console.WriteLine("TraceSource switch level = " + ts.Switch.Level.ToString())
        Console.WriteLine("TraceSource switch = " + ts.Switch.DisplayName.ToString())
        Dim switches As SwitchAttribute() = SwitchAttribute.GetAll(GetType(TraceTest).Assembly)
        Dim i As Integer
        For i = 0 To switches.Length - 1
            Console.WriteLine("Switch name = " + switches(i).SwitchName.ToString())
            Console.WriteLine("Switch type = " + switches(i).SwitchType.ToString())
        Next i

#If (ConfigFile) Then
        ' Get the custom attributes for the TraceSource.
        Console.WriteLine("Number of custom trace source attributes = " + ts.Attributes.Count)
        Dim de As DictionaryEntry
        For Each de In ts.Attributes
            Console.WriteLine("Custom trace source attribute = " + de.Key + "  " + de.Value)
        Next de
        ' Get the custom attributes for the trace source switch.
        For Each de In ts.Switch.Attributes
            Console.WriteLine("Custom switch attribute = " + de.Key + "  " + de.Value)
        Next de
#End If
        Console.WriteLine("Number of listeners = " + ts.Listeners.Count.ToString())
        Dim traceListener As TraceListener
        For Each traceListener In ts.Listeners
            Console.Write("TraceListener: " + traceListener.Name + vbTab)
            ' The following output can be used to update the configuration file.
            Console.WriteLine("AssemblyQualifiedName = " + traceListener.GetType().AssemblyQualifiedName)
        Next traceListener

    End Sub
End Class

Hinweise

Die TraceSource-Klasse wird von Anwendungen verwendet, um Ablaufverfolgungen zu erzeugen, die der Anwendung zugeordnet werden können.The TraceSource class is used by applications to produce traces that can be associated with the application. TraceSource stellt Ablaufverfolgungsmethoden bereit, mit denen Sie Ereignisse und Daten einfach verfolgen und Ablaufverfolgungen zu Informationszwecken ausgeben können.TraceSource provides tracing methods that allow you to easily trace events, trace data, and issue informational traces. Die Ablauf Verfolgungs TraceSource Ausgabe von kann von den Einstellungen der Konfigurationsdatei gesteuert werden.Trace output from TraceSource can be controlled by configuration file settings. Die Konfigurationsdatei befindet sich im Ordner mit der ausführbaren Datei der Anwendung und enthält den Namen der Anwendung, der die Dateinamenerweiterung. config hinzugefügt wurde.The configuration file is located in the folder with the application executable and has the name of the application with the .config file name extension added. Der Name der Konfigurationsdatei für "TraceSourceSample. exe" lautet beispielsweise "TraceSourceSample. exe. config". Die Konfigurationsdatei kann verwendet werden, um zu bestimmen, wohin die Ablauf Verfolgungs Informationen gesendet werden sollen, und für welche Aktivitätsstufen eine Ablauf Verfolgung durchgeführt werden soll.For example, the name of the configuration file for TraceSourceSample.exe is TraceSourceSample.exe.config. The configuration file can be used to determine where the trace information is to be sent and what levels of activity are to be traced. Das folgende Beispiel zeigt den Inhalt einer Beispiel Anwendungs Konfigurationsdatei.The following example shows the contents of a sample application configuration file.

<configuration>  
  <system.diagnostics>  
    <sources>  
      <source name="TraceTest" switchName="SourceSwitch"   
        switchType="System.Diagnostics.SourceSwitch" >  
        <listeners>  
          <add name="console" />  
          <remove name ="Default" />  
        </listeners>  
      </source>  
    </sources>  
    <switches>  
      <!-- You can set the level at which tracing is to occur -->  
      <add name="SourceSwitch" value="Warning" />  
        <!-- You can turn tracing off -->  
        <!--add name="SourceSwitch" value="Off" -->  
    </switches>  
    <sharedListeners>  
      <add name="console"   
        type="System.Diagnostics.ConsoleTraceListener"   
        initializeData="false"/>  
    </sharedListeners>  
    <trace autoflush="true" indentsize="4">  
      <listeners>  
        <add name="console" />  
      </listeners>  
    </trace>  
  </system.diagnostics>  
</configuration>  

Die TraceSource -Klasse wird durch den Namen einer Quelle, in der Regel der Name der Anwendung, identifiziert.The TraceSource class is identified by the name of a source, typically the name of the application. Die Ablauf Verfolgungs Meldungen, die von einer bestimmten Komponente stammen, können von einer bestimmten Ablauf Verfolgungs Quelle initiiert werden, sodass alle Nachrichten, die von dieser Komponente stammen, problemlos identifiziert werden können.The trace messages coming from a particular component can be initiated by a particular trace source, allowing all messages coming from that component to be easily identified.

TraceSourcedefiniert Ablauf Verfolgungsmethoden, bietet aber keinen spezifischen Mechanismus zum Erstellen und Speichern von Ablauf Verfolgungs Daten.TraceSource defines tracing methods but does not actually provide any specific mechanism for generating and storing tracing data. Die Ablauf Verfolgungs Daten werden von Ablaufverfolgungslistenern erstellt, bei denen es sich um Plug-ins handelt, die von Ablauf Verfolgungs QuellenThe tracing data is produced by trace listeners, which are plug-ins that can be loaded by trace sources.

Hinweis

Sie sollten die Ablauf Verfolgungsmethoden während der Finalisierung nicht aufzurufen.You should not call the tracing methods during finalization. Dies kann dazu führen, dass ObjectDisposedException eine ausgelöst wird.Doing so can result in an ObjectDisposedException being thrown.

Sie können das Ziel der Ablauf Verfolgungs Ausgabe anpassen, indem Sie TraceListener der in der TraceSource.Listeners -Eigenschaft gespeicherten-Auflistung Instanzen hinzufügen oder daraus entfernen.You can customize the tracing output's target by adding or removing TraceListener instances to or from the collection stored in the TraceSource.Listeners property. Standardmäßig wird die DefaultTraceListener Ausgabe der Ablauf Verfolgung mithilfe einer Instanz der-Klasse erzeugt.By default, trace output is produced using an instance of the DefaultTraceListener class. Das vorangehende Beispiel für eine Konfigurationsdatei DefaultTraceListener veranschaulicht das Entfernen ConsoleTraceListener von und das Hinzufügen eines, um die Ausgabe der Ablauf Verfolgung für die Ablauf Verfolgungs QuelleThe preceding configuration file example demonstrates removing the DefaultTraceListener and adding a ConsoleTraceListener to produce the trace output for the trace source. Weitere Informationen <finden> Sie unter Listener und <sharedlistener>.For more information, see <listeners> and <sharedListeners>.

Hinweis

Das Listeners Hinzufügen eines Ablaufverfolgungslistener zur Auflistung kann dazu führen, dass während der Ablauf Verfolgung eine Ausnahme ausgelöst wird, wenn eine vom Ablaufverfolgungslistener verwendete RessourceAdding a trace listener to the Listeners collection can cause an exception to be thrown while tracing, if a resource used by the trace listener is not available. Die Bedingungen und die ausgelöste Ausnahme hängen vom Ablaufverfolgungslistener ab und können in diesem Thema nicht aufgelistet werden.The conditions and the exception thrown depend on the trace listener and cannot be enumerated in this topic. Es kann nützlich sein TraceSource , Aufrufe der Methoden in try / catch -Blöcken zu platzieren, um Ausnahmen von Ablaufverfolgungslistenern zu erkennen und zu behandeln.It may be useful to place calls to the TraceSource methods in try/catch blocks to detect and handle any exceptions from trace listeners.

Die SourceSwitch -Klasse stellt die Mittel bereit, um die Ablauf Verfolgungs Ausgabe dynamisch zu steuern.The SourceSwitch class provides the means to dynamically control the tracing output. Das vorangehende Beispiel für eine Konfigurationsdatei zeigt, wie Sie die Ablauf Verfolgung von einer Ablauf Verfolgungs Quelle ausschalten und die Ebene steuern können, auf der die Ablauf Verfolgung auftritt.The preceding configuration file example shows how you can turn off tracing from a trace source and control the level at which tracing occurs. Sie können den Wert des Quell Schalters ändern, ohne die Anwendung neu zu kompilieren.You can modify the value of the source switch without recompiling your application. Informationen zum Verwenden der Konfigurationsdatei zum Festlegen eines Schalters finden Switch Sie unter und Vorgehensweise: Erstellen, initialisieren und Konfigurieren von AblaufVerfolgungs Schaltern.For information on using the configuration file to set a switch, see Switch and How to: Create, Initialize and Configure Trace Switches.

Hinweis

Wenn Sie eine Konfigurationsdatei ändern, während eine Anwendung ausgeführt wird, muss die Anwendung angehalten und neu gestartet Refresh werden, oder die-Methode muss aufgerufen werden, bevor die neuen Einstellungen wirksam werden.If you modify a configuration file while an application is executing, the application must be stopped and restarted or the Refresh method must be called before the new settings take effect.

Die TraceEventType -Enumeration wird verwendet, um den Ereignistyp der Ablauf Verfolgungs Meldung zu definieren.The TraceEventType enumeration is used to define the event type of the trace message. Ablauf Verfolgungs Filter verwenden TraceEventType das, um zu bestimmen, ob ein Ablaufverfolgungslistener die Ablauf Verfolgungs MeldungTrace filters use the TraceEventType to determine if a trace listener should produce the trace message.

Die Ablaufverfolgungslistener können optional über einen Ablauf Verfolgungs Filter eine zusätzliche Schicht filtern.The trace listeners can optionally have an additional layer of filtering through a trace filter. Wenn einem Ablaufverfolgungslistener ein Filter zugeordnet ist ShouldTrace , ruft der Listener die-Methode für diesen Filter auf, um zu bestimmen, ob die Ablauf Verfolgungs Informationen erzeugt werden sollen.If a trace listener has an associated filter, the listener calls the ShouldTrace method on that filter to determine whether or not to produce the trace information.

Die Ablaufverfolgungslistener Trace verwenden die IndentWerte der Klassen AutoFlush Eigenschaften, IndentSizeund zum Formatieren der Ablauf Verfolgungs Ausgabe.The trace listeners use the values of the Trace class properties Indent, IndentSize, and AutoFlush to format trace output. Mit den Attributen der Konfigurationsdatei können Sie die IndentEigenschaften IndentSize, und AutoFlush festlegen.You can use configuration file attributes to set the Indent, IndentSize, and AutoFlush properties. Im folgenden Beispiel wird die AutoFlush -Eigenschaft false auf und IndentSize die-Eigenschaft auf 3 festgelegt.The following example sets the AutoFlush property to false and the IndentSize property to 3.

<configuration>  
  <system.diagnostics>  
    <trace autoflush="false" indentsize="3" />  
  </system.diagnostics>  
</configuration>  

Konstruktoren

TraceSource(String)

Initialisiert eine neue Instanz der TraceSource-Klasse, wobei der angegebene Namen der Quelle verwendet wird.Initializes a new instance of the TraceSource class, using the specified name for the source.

TraceSource(String, SourceLevels)

Initialisiert eine neue Instanz der TraceSource-Klasse, wobei der angegebene Name der Quelle und die Standardebene der Quelle verwendet werden, auf der die Ablaufverfolgung durchgeführt werden soll.Initializes a new instance of the TraceSource class, using the specified name for the source and the default source level at which tracing is to occur.

Eigenschaften

Attributes

Ruft die benutzerdefinierten Schalterattribute ab, die in der Anwendungskonfigurationsdatei definiert sind.Gets the custom switch attributes defined in the application configuration file.

Listeners

Ruft die Auflistung der Ablaufverfolgungslistener für die Ablaufverfolgungsquelle ab.Gets the collection of trace listeners for the trace source.

Name

Ruft den Namen der Ablaufverfolgungsquelle ab.Gets the name of the trace source.

Switch

Ruft den Wert des Quellschalters ab oder legt diesen fest.Gets or sets the source switch value.

Methoden

Close()

Schließt alle Ablaufverfolgungslistener in der Auflistung der Ablaufverfolgungslistener.Closes all the trace listeners in the trace listener collection.

Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
Flush()

Entfernt alle Ablaufverfolgungslistener aus der Auflistung der Ablaufverfolgungslistener.Flushes all the trace listeners in the trace listener collection.

GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Geerbt von Object)
GetSupportedAttributes()

Ruft die von der Ablaufverfolgungsquelle unterstützten benutzerdefinierten Attribute ab.Gets the custom attributes supported by the trace source.

GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)
TraceData(TraceEventType, Int32, Object)

Schreibt Ablaufverfolgungsdaten in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene Ereignistyp, der Ereignisbezeichner und die angegebenen Ablaufverfolgungsdaten verwendet.Writes trace data to the trace listeners in the Listeners collection using the specified event type, event identifier, and trace data.

TraceData(TraceEventType, Int32, Object[])

Schreibt Ablaufverfolgungsdaten in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene Ereignistyp, der Ereignisbezeichner und das Array von Ablaufverfolgungsdaten verwendet.Writes trace data to the trace listeners in the Listeners collection using the specified event type, event identifier, and trace data array.

TraceEvent(TraceEventType, Int32)

Schreibt eine Meldung eines Ablaufverfolgungsereignisses in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene Ereignistyp und Ereignisbezeichner verwendet.Writes a trace event message to the trace listeners in the Listeners collection using the specified event type and event identifier.

TraceEvent(TraceEventType, Int32, String)

Schreibt eine Meldung eines Ablaufverfolgungsereignisses in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene Ereignistyp, der Ereignisbezeichner und die angegebene Meldung verwendet.Writes a trace event message to the trace listeners in the Listeners collection using the specified event type, event identifier, and message.

TraceEvent(TraceEventType, Int32, String, Object[])

Schreibt ein Ablaufverfolgungsereignis in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene Ereignistyp, der Ereignisbezeichner sowie das angegebene Argumentarray und Format verwendet.Writes a trace event to the trace listeners in the Listeners collection using the specified event type, event identifier, and argument array and format.

TraceInformation(String)

Schreibt eine Informationsmeldung unter Verwendung der angegebenen Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung.Writes an informational message to the trace listeners in the Listeners collection using the specified message.

TraceInformation(String, Object[])

Schreibt eine Informationsmeldung unter Verwendung des angegebenen Objektarrays und der Formatierungsinformationen in die Ablaufverfolgungslistener in der Listeners-Auflistung.Writes an informational message to the trace listeners in the Listeners collection using the specified object array and formatting information.

TraceTransfer(Int32, String, Guid)

Schreibt eine Meldung der Ablaufverfolgungsübertragung in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene numerische Bezeichner, die Meldung und der verwandte Aktivitätsbezeichner verwendet.Writes a trace transfer message to the trace listeners in the Listeners collection using the specified numeric identifier, message, and related activity identifier.

Gilt für:

Threadsicherheit

Dieser Typ ist threadsicher.This type is thread safe.

Siehe auch