Share via


TraceSource Kelas

Definisi

Menyediakan sekumpulan metode dan properti yang memungkinkan aplikasi melacak eksekusi kode dan mengaitkan pesan pelacakan dengan sumbernya.

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

Contoh

Contoh kode berikut menunjukkan penggunaan TraceSource kelas untuk meneruskan jejak ke pendengar. Contohnya juga menunjukkan penggunaan sakelar dan filter.

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

Keterangan

Kelas TraceSource digunakan oleh aplikasi untuk menghasilkan jejak yang dapat dikaitkan dengan aplikasi. TraceSource menyediakan metode penelusuran yang memungkinkan Anda melacak peristiwa, melacak data, dan mengeluarkan jejak informasi dengan mudah.

Di aplikasi .NET Framework, output pelacakan dari TraceSource dapat dikontrol oleh pengaturan file konfigurasi. File konfigurasi terletak di folder dengan aplikasi yang dapat dieksekusi dan memiliki nama aplikasi dengan ekstensi .config ditambahkan. Misalnya, nama file konfigurasi untuk TraceSourceSample.exe TraceSourceSample.exe.config. File konfigurasi dapat digunakan untuk menentukan di mana informasi pelacakan akan dikirim dan tingkat aktivitas apa yang akan dilacak. Contoh berikut menunjukkan konten sampel .NET Framework file konfigurasi aplikasi.

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

Kelas TraceSource diidentifikasi dengan nama sumber, biasanya nama aplikasi. Pesan jejak yang berasal dari komponen tertentu dapat dimulai oleh sumber pelacakan tertentu, memungkinkan semua pesan yang berasal dari komponen tersebut untuk diidentifikasi dengan mudah.

TraceSource mendefinisikan metode pelacakan tetapi sebenarnya tidak menyediakan mekanisme khusus untuk menghasilkan dan menyimpan data pelacakan. Data pelacakan diproduksi oleh pendengar pelacakan, yang merupakan plug-in yang dapat dimuat oleh sumber pelacakan.

Catatan

Anda tidak boleh memanggil metode pelacakan selama finalisasi. Melakukannya dapat mengakibatkan dilemparkan ObjectDisposedException .

Anda dapat menyesuaikan target output pelacakan dengan menambahkan atau menghapus TraceListener instans ke atau dari koleksi yang disimpan di TraceSource.Listeners properti . Secara default, output pelacakan diproduksi menggunakan instans DefaultTraceListener kelas .

Contoh file konfigurasi aplikasi .NET Framework sebelumnya menunjukkan menghapus DefaultTraceListener dan menambahkan ConsoleTraceListener untuk menghasilkan output jejak untuk sumber pelacakan. Untuk informasi selengkapnya, lihat <listener> dan <sharedListeners>.

Catatan

Menambahkan pendengar jejak ke Listeners koleksi dapat menyebabkan pengecualian dilemparkan saat melacak, jika sumber daya yang digunakan oleh pendengar pelacakan tidak tersedia. Kondisi dan pengecualian yang dilemparkan tergantung pada pendengar jejak dan tidak dapat dijumlahkan dalam topik ini. Mungkin berguna untuk melakukan panggilan ke TraceSource metode dalam try/catch blok untuk mendeteksi dan menangani pengecualian apa pun dari pendengar pelacakan.

Kelas SourceSwitch menyediakan sarana untuk mengontrol output pelacakan secara dinamis. Untuk aplikasi .NET Framework, contoh file konfigurasi sebelumnya menunjukkan bagaimana Anda dapat menonaktifkan pelacakan dari sumber pelacakan dan mengontrol tingkat di mana pelacakan terjadi. Anda dapat memodifikasi nilai sakelar sumber tanpa mengolah ulang aplikasi Anda. Untuk informasi tentang menggunakan file konfigurasi untuk mengatur sakelar, lihat Switch dan Cara: Create, Menginisialisasi, dan Mengonfigurasi Sakelar Pelacakan.

Catatan

Jika Anda mengubah file konfigurasi saat aplikasi dijalankan, aplikasi harus dihentikan dan dimulai ulang atau Refresh metode harus dipanggil sebelum pengaturan baru berlaku.

TraceEventType Enumerasi digunakan untuk menentukan jenis peristiwa pesan pelacakan. Filter pelacakan menggunakan TraceEventType untuk menentukan apakah pendengar jejak harus menghasilkan pesan pelacakan.

Pendengar jejak dapat secara opsional memiliki lapisan pemfilteran tambahan melalui filter pelacakan. Jika pendengar jejak memiliki filter terkait, pendengar memanggil metode pada filter tersebut ShouldTrace untuk menentukan apakah akan menghasilkan informasi pelacakan atau tidak.

Pendengar jejak menggunakan nilai Trace properti Indentkelas , , IndentSizedan AutoFlush untuk memformat output pelacakan. Di aplikasi .NET Framework, Anda dapat menggunakan atribut file konfigurasi untuk mengatur Indentproperti , IndentSize, dan AutoFlush . Contoh berikut mengatur properti ke AutoFlushfalse dan IndentSize properti ke 3.

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

Konstruktor

TraceSource(String)

Menginisialisasi instans TraceSource baru kelas, menggunakan nama yang ditentukan untuk sumbernya.

TraceSource(String, SourceLevels)

Menginisialisasi instans TraceSource baru kelas, menggunakan nama yang ditentukan untuk sumber dan tingkat sumber default tempat pelacakan terjadi.

Properti

Attributes

Mendapatkan atribut sakelar kustom yang ditentukan dalam file konfigurasi aplikasi.

DefaultLevel

Mendapatkan tingkat default yang ditetapkan di konstruktor.

Listeners

Mendapatkan kumpulan pendengar jejak untuk sumber pelacakan.

Name

Mendapatkan nama sumber pelacakan.

Switch

Mendapatkan atau mengatur nilai sakelar sumber.

Metode

Close()

Menutup semua pendengar jejak dalam koleksi pendengar jejak.

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
Flush()

Menghapus semua pendengar jejak dalam koleksi pendengar jejak.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetSupportedAttributes()

Mendapatkan atribut kustom yang didukung oleh sumber pelacakan.

GetType()

Mendapatkan dari instans Type saat ini.

(Diperoleh dari Object)
MemberwiseClone()

Membuat salinan dangkal dari saat ini Object.

(Diperoleh dari Object)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
TraceData(TraceEventType, Int32, Object)

Menulis data pelacakan ke pendengar pelacakan dalam Listeners koleksi menggunakan jenis peristiwa, pengidentifikasi peristiwa, dan data pelacakan yang ditentukan.

TraceData(TraceEventType, Int32, Object[])

Menulis data pelacakan ke pendengar pelacakan dalam Listeners koleksi menggunakan jenis peristiwa, pengidentifikasi peristiwa, dan array data pelacakan yang ditentukan.

TraceEvent(TraceEventType, Int32)

Menulis pesan peristiwa pelacakan ke pendengar jejak dalam Listeners koleksi menggunakan jenis peristiwa dan pengidentifikasi peristiwa yang ditentukan.

TraceEvent(TraceEventType, Int32, String)

Menulis pesan peristiwa pelacakan ke pendengar jejak dalam Listeners koleksi menggunakan jenis peristiwa, pengidentifikasi peristiwa, dan pesan yang ditentukan.

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

Menulis peristiwa pelacakan ke pendengar pelacakan dalam Listeners koleksi menggunakan jenis peristiwa, pengidentifikasi peristiwa, serta array dan format argumen yang ditentukan.

TraceInformation(String)

Menulis pesan informasi ke pendengar pelacakan dalam Listeners koleksi menggunakan pesan yang ditentukan.

TraceInformation(String, Object[])

Menulis pesan informasi ke pendengar pelacakan dalam Listeners koleksi menggunakan array objek dan informasi pemformatan yang ditentukan.

TraceTransfer(Int32, String, Guid)

Menulis pesan transfer jejak ke pendengar jejak dalam Listeners koleksi menggunakan pengidentifikasi numerik, pesan, dan pengidentifikasi aktivitas terkait yang ditentukan.

Acara

Initializing

Terjadi ketika TraceSource perlu diinisialisasi.

Berlaku untuk

Keamanan Thread

Jenis ini aman untuk utas.

Lihat juga