TraceSource Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Udostępnia zestaw metod i właściwości, które umożliwiają aplikacjom śledzenie wykonywania kodu i kojarzenie komunikatów śledzenia ze źródłem.
public ref class TraceSource
public class TraceSource
type TraceSource = class
Public Class TraceSource
- Dziedziczenie
-
TraceSource
Przykłady
Poniższy przykład kodu przedstawia użycie TraceSource klasy do przekazywania śladów do odbiorników. W przykładzie pokazano również użycie przełącznika i filtrowania.
/////////////////////////////////////////////////////////////////////////////////
//
// 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
Uwagi
Klasa TraceSource jest używana przez aplikacje do tworzenia śladów, które mogą być skojarzone z aplikacją. TraceSource Udostępnia metody śledzenia, które umożliwiają łatwe śledzenie zdarzeń, danych śledzenia i wydawania śladów informacyjnych.
W aplikacjach .NET Framework dane wyjściowe TraceSource śledzenia można kontrolować za pomocą ustawień pliku konfiguracji. Plik konfiguracji znajduje się w folderze z plikiem wykonywalny aplikacji i ma nazwę aplikacji z dodanym rozszerzeniem .config. Na przykład nazwa pliku konfiguracji dla TraceSourceSample.exe jest TraceSourceSample.exe.config. Plik konfiguracji może służyć do określenia miejsca, w którym mają być wysyłane informacje dotyczące śledzenia i jakie poziomy aktywności mają być śledzone. W poniższym przykładzie przedstawiono zawartość przykładowego pliku konfiguracji aplikacji .NET Framework.
<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>
Klasa TraceSource jest identyfikowana przez nazwę źródła, zazwyczaj nazwę aplikacji. Komunikaty śledzenia pochodzące z określonego składnika mogą być inicjowane przez określone źródło śledzenia, co umożliwia łatwe zidentyfikowanie wszystkich komunikatów pochodzących z tego składnika.
TraceSource definiuje metody śledzenia, ale nie zapewnia żadnego konkretnego mechanizmu generowania i przechowywania danych śledzenia. Dane śledzenia są generowane przez odbiorniki śledzenia, które są wtyczkami, które mogą być ładowane przez źródła śledzenia.
Uwaga
Nie należy wywoływać metod śledzenia podczas finalizacji. Może to spowodować ObjectDisposedException zgłoszenie.
Element docelowy danych wyjściowych śledzenia można dostosować, dodając lub usuwając TraceListener wystąpienia do lub z kolekcji przechowywanej TraceSource.Listeners we właściwości. Domyślnie dane wyjściowe śledzenia są generowane przy użyciu wystąpienia DefaultTraceListener klasy.
W poprzednim przykładzie pliku konfiguracji aplikacji .NET Framework pokazano usunięcie elementu DefaultTraceListener i dodanie elementu ConsoleTraceListener w celu wygenerowania danych wyjściowych śledzenia dla źródła śledzenia. Aby uzyskać więcej informacji, zobacz <odbiorniki> i <udostępnioneListeners>.
Uwaga
Dodanie odbiornika śledzenia do Listeners kolekcji może spowodować zgłoszenie wyjątku podczas śledzenia, jeśli zasób używany przez odbiornik śledzenia jest niedostępny. Warunki i zgłoszony wyjątek zależą od odbiornika śledzenia i nie można go wyliczyć w tym temacie. Może być przydatne umieszczenie wywołań do TraceSource metod w try
/catch
blokach w celu wykrywania i obsługi wszelkich wyjątków od odbiorników śledzenia.
Klasa SourceSwitch zapewnia metodę dynamicznego kontrolowania danych wyjściowych śledzenia. W przypadku aplikacji .NET Framework poprzedni przykład pliku konfiguracji pokazuje, jak można wyłączyć śledzenie ze źródła śledzenia i kontrolować poziom, na którym występuje śledzenie. Możesz zmodyfikować wartość przełącznika źródłowego bez ponownego komplikowania aplikacji. Aby uzyskać informacje na temat ustawiania przełącznika przy użyciu pliku konfiguracji, zobacz Switch i Instrukcje: Twórca, Inicjowanie i konfigurowanie przełączników śledzenia.
Uwaga
Jeśli modyfikujesz plik konfiguracji podczas wykonywania aplikacji, aplikacja musi zostać zatrzymana i uruchomiona ponownie lub Refresh metoda musi zostać wywołana przed zastosowaniem nowych ustawień.
Wyliczenie TraceEventType służy do definiowania typu zdarzenia komunikatu śledzenia. Filtry śledzenia używają elementu TraceEventType , aby określić, czy odbiornik śledzenia powinien wygenerować komunikat śledzenia.
Odbiorniki śledzenia mogą opcjonalnie mieć dodatkową warstwę filtrowania przez filtr śledzenia. Jeśli odbiornik śledzenia ma skojarzony filtr, odbiornik wywołuje ShouldTrace metodę w tym filtrze, aby określić, czy utworzyć informacje śledzenia.
Odbiorniki śledzenia używają wartości Trace właściwości Indentklasy , IndentSizei AutoFlush do formatowania danych wyjściowych śledzenia. W aplikacjach .NET Framework można użyć atrybutów pliku konfiguracji, aby ustawić Indentwłaściwości , IndentSizei AutoFlush . Poniższy przykład ustawia AutoFlush właściwość na false
i IndentSize właściwość na 3.
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="3" />
</system.diagnostics>
</configuration>
Konstruktory
TraceSource(String) |
Inicjuje TraceSource nowe wystąpienie klasy przy użyciu określonej nazwy źródła. |
TraceSource(String, SourceLevels) |
Inicjuje nowe wystąpienie TraceSource klasy przy użyciu określonej nazwy źródła i domyślnego poziomu źródła, na którym ma nastąpić śledzenie. |
Właściwości
Attributes |
Pobiera atrybuty przełącznika niestandardowego zdefiniowane w pliku konfiguracji aplikacji. |
DefaultLevel |
Pobiera domyślny poziom przypisany w konstruktorze. |
Listeners |
Pobiera kolekcję odbiorników śledzenia dla źródła śledzenia. |
Name |
Pobiera nazwę źródła śledzenia. |
Switch |
Pobiera lub ustawia wartość przełącznika źródłowego. |
Metody
Close() |
Zamyka wszystkie odbiorniki śledzenia w kolekcji odbiorników śledzenia. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
Flush() |
Opróżnia wszystkie odbiorniki śledzenia w kolekcji odbiorników śledzenia. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetSupportedAttributes() |
Pobiera atrybuty niestandardowe obsługiwane przez źródło śledzenia. |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
TraceData(TraceEventType, Int32, Object) |
Zapisuje dane śledzenia do odbiorników śledzenia w Listeners kolekcji przy użyciu określonego typu zdarzenia, identyfikatora zdarzenia i danych śledzenia. |
TraceData(TraceEventType, Int32, Object[]) |
Zapisuje dane śledzenia do odbiorników śledzenia w Listeners kolekcji przy użyciu określonego typu zdarzenia, identyfikatora zdarzenia i tablicy danych śledzenia. |
TraceEvent(TraceEventType, Int32) |
Zapisuje komunikat zdarzenia śledzenia do odbiorników śledzenia w Listeners kolekcji przy użyciu określonego typu zdarzenia i identyfikatora zdarzenia. |
TraceEvent(TraceEventType, Int32, String) |
Zapisuje komunikat zdarzenia śledzenia do odbiorników śledzenia w Listeners kolekcji przy użyciu określonego typu zdarzenia, identyfikatora zdarzenia i komunikatu. |
TraceEvent(TraceEventType, Int32, String, Object[]) |
Zapisuje zdarzenie śledzenia do odbiorników śledzenia w Listeners kolekcji przy użyciu określonego typu zdarzenia, identyfikatora zdarzenia i tablicy argumentów i formatu. |
TraceInformation(String) |
Zapisuje komunikat informacyjny do odbiorników śledzenia w Listeners kolekcji przy użyciu określonego komunikatu. |
TraceInformation(String, Object[]) |
Zapisuje komunikat informacyjny do odbiorników śledzenia w Listeners kolekcji przy użyciu określonej tablicy obiektów i informacji o formatowaniu. |
TraceTransfer(Int32, String, Guid) |
Zapisuje komunikat transferu śledzenia do odbiorników śledzenia w Listeners kolekcji przy użyciu określonego identyfikatora liczbowego, komunikatu i powiązanego identyfikatora działania. |
Zdarzenia
Initializing |
Występuje, gdy należy zainicjować element TraceSource . |
Dotyczy
Bezpieczeństwo wątkowe
Ten typ jest bezpieczny wątkowo.