EventSchemaTraceListener Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Direciona o rastreio ou depuração da saída de eventos de ponta a ponta para um ficheiro de registo codificado em XML e compatível com o esquema.
public ref class EventSchemaTraceListener : System::Diagnostics::TextWriterTraceListener
public class EventSchemaTraceListener : System.Diagnostics.TextWriterTraceListener
type EventSchemaTraceListener = class
inherit TextWriterTraceListener
Public Class EventSchemaTraceListener
Inherits TextWriterTraceListener
- Herança
Exemplos
O exemplo de código seguinte demonstra como usar a EventSchemaTraceListener classe.
#define NOCONFIGFILE
using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Diagnostics;
class testClass
{
[STAThreadAttribute]
static void Main()
{
File.Delete("TraceOutput.xml");
TraceSource ts = new TraceSource("TestSource");
#if NOCONFIGFILE
//ts.Listeners.Add(new EventSchemaTraceListener("TraceOutput.xml", "eventListener", 65536, TraceLogRetentionOption.LimitedCircularFiles, 20480000, 2));
ts.Listeners.Add(new EventSchemaTraceListener("TraceOutput.xml", "eventListener"));
ts.Listeners["eventListener"].TraceOutputOptions = TraceOptions.DateTime | TraceOptions.ProcessId | TraceOptions.Timestamp;
#endif
ts.Switch.Level = SourceLevels.All;
string testString = "<Test><InnerElement Val=\"1\" /><InnerElement Val=\"Data\"/><AnotherElement>11</AnotherElement></Test>";
UnescapedXmlDiagnosticData unXData = new UnescapedXmlDiagnosticData(testString);
ts.TraceData(TraceEventType.Error, 38, unXData);
ts.TraceEvent(TraceEventType.Error, 38, testString);
Trace.Listeners.Add(new EventSchemaTraceListener("TraceOutput.xml"));
Trace.Write("test", "test");
Trace.Flush();
ts.Flush();
ts.Close();
DisplayProperties(ts);
Process.Start("notepad.exe", "TraceOutput.xml");
Console.WriteLine("Press the enter key to exit");
Console.ReadLine();
}
private static void DisplayProperties(TraceSource ts)
{
Console.WriteLine("IsThreadSafe? " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).IsThreadSafe);
Console.WriteLine("BufferSize = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).BufferSize);
Console.WriteLine("MaximumFileSize = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).MaximumFileSize);
Console.WriteLine("MaximumNumberOfFiles = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).MaximumNumberOfFiles);
Console.WriteLine("Name = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).Name);
Console.WriteLine("TraceLogRetentionOption = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).TraceLogRetentionOption);
Console.WriteLine("TraceOutputOptions = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).TraceOutputOptions);
}
}
#Const NOCONFIGFILE = True
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
Imports System.Diagnostics
Class testClass
<STAThreadAttribute()> _
Shared Sub Main()
File.Delete("TraceOutput.xml")
Dim ts As New TraceSource("TestSource")
#If NOCONFIGFILE Then
ts.Listeners.Add(New EventSchemaTraceListener("TraceOutput.xml", "eventListener", 65536, TraceLogRetentionOption.LimitedCircularFiles, 20480000, 2))
ts.Listeners("eventListener").TraceOutputOptions = TraceOptions.DateTime Or TraceOptions.ProcessId Or TraceOptions.Timestamp
#End If
ts.Switch.Level = SourceLevels.All
Dim testString As String = "<Test><InnerElement Val=""1"" /><InnerElement Val=""Data""/><AnotherElement>11</AnotherElement></Test>"
Dim unXData As New UnescapedXmlDiagnosticData(testString)
ts.TraceData(TraceEventType.Error, 38, unXData)
ts.TraceEvent(TraceEventType.Error, 38, testString)
ts.Flush()
ts.Close()
DisplayProperties(ts)
Process.Start("notepad.exe", "TraceOutput.xml")
Console.WriteLine("Press the enter key to exit")
Console.ReadLine()
End Sub
Private Shared Sub DisplayProperties(ByVal ts As TraceSource)
Console.WriteLine("IsThreadSafe? " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).IsThreadSafe.ToString())
Console.WriteLine("BufferSize = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).BufferSize.ToString())
Console.WriteLine("MaximumFileSize = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).MaximumFileSize.ToString())
Console.WriteLine("MaximumNumberOfFiles = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).MaximumNumberOfFiles.ToString())
Console.WriteLine("Name = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).Name)
Console.WriteLine("TraceLogRetentionOption = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).TraceLogRetentionOption.ToString())
Console.WriteLine("TraceOutputOptions = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).TraceOutputOptions.ToString())
End Sub
End Class
Observações
A EventSchemaTraceListener classe fornece rastreamento de eventos compatíveis com o esquema de ponta a ponta. Pode usar traço de ponta a ponta para um sistema que tenha componentes heterogéneos que cruzam fronteiras de thread, AppDomain, processo e computador. Um esquema de eventos padronizado permite o traçado através destes limites. O esquema permite a adição de elementos personalizados e compatíveis com o esquema. Pode usar a ferramenta Service Trace Viewer (SvcTraceViewer.exe) para mostrar os dados do evento.
EventSchemaTraceListener é ajustado para registo de desempenho com suporte implícito para rastreamento sem bloqueios.
A EventSchemaTraceListener classe converte informações de rastreio e depuração num fluxo de texto codificado em XML. A descrição da saída XML é apresentada nas tabelas seguintes nesta secção.
Podes criar um EventSchemaTraceListener objeto no teu código. Alternativamente, para .NET aplicações Framework, pode ativar ou desativar um objeto EventSchemaTraceListener através do ficheiro de configuração da aplicação e depois usar o objeto configurado EventSchemaTraceListener na sua aplicação. Para informações sobre o uso de ficheiros de configuração para rastreamento e depuração em aplicações .NET Framework, consulte Trace and Debug Settings Schema.
Para configurar um objeto EventSchemaTraceListener numa aplicação .NET Framework, modifique o ficheiro de configuração correspondente ao nome da sua aplicação. Neste ficheiro, pode adicionar, remover ou definir as propriedades de um ouvinte. O ficheiro de configuração deve ser formatado da seguinte forma:
<configuration>
<system.diagnostics>
<sources>
<source name="TestSource" >
<listeners>
<!--Remove the default trace listener for better performance.-->
<remove name="Default"/>
<!--Note: Removing the default trace listener prevents the dialog box
from being displayed for Debug.Fail or Debug.Assert commands that are
executed in user mode.-->
<add name="eventListener"
type="System.Diagnostics.EventSchemaTraceListener, system.core"
initializeData="TraceOutput.xml"
traceOutputOptions="ProcessId, DateTime, Timestamp"
bufferSize="65536"
maximumFileSize="20480000"
logRetentionOption="LimitedCircularFiles"
maximumNumberOfFiles="2"/>
</listeners>
</source>
</sources>
</system.diagnostics>
A EventSchemaTraceListener classe herda a Filter propriedade da classe TraceListenerbase . Esta Filter propriedade permite um nível adicional de filtragem de saída de traço no ouvinte. Se houver um filtro, os Trace métodos do ouvinte de traços chamam o ShouldTrace método do filtro para determinar se emitem o traço.
Se for feita uma tentativa de escrever num ficheiro que está a ser usado ou não está disponível, um sufixo GUID é automaticamente adicionado ao nome do ficheiro.
Note
Os métodos de ouvinte destinam-se a ser chamados pelos métodos das Debugclasses , Trace, e TraceSource . Não chame os métodos do ouvinte diretamente a partir do código da aplicação. O EventSchemaTraceListener ouvinte destina-se principalmente ao uso da TraceSource turma.
A tabela seguinte descreve os elementos e atributos da saída XML.
| Elemento | Attributes | Produção | Notes |
|---|---|---|---|
CallStack |
None | Depende da presença da Callstack bandeira na TraceOutputOptions propriedade. | Caracteres especiais como > ou < são substituídos por sequências de fuga. Veja a tabela de tradução de caracteres escapados na tabela seguinte. |
Computer |
None | Sempre presente. | Este elemento representa o valor da MachineName propriedade. |
Correlation |
ActivityID |
Sempre presente. | Se ActivityID não for especificado, o padrão é um GUID vazio. |
RelatedActivityID |
Depende da presença do relatedActivityId parâmetro na chamada ao Trace método. |
O RelatedActivityID atributo corresponde ao relatedActivityId parâmetro do TraceTransfer método. |
|
Data |
None | Sempre presente. | Este elemento representa a entrada do parâmetro (data). É fornecido um elemento para cada objeto de dados. No caso dos registos de eventos, o Data elemento contém dados XML escapados. No caso dos registos de dados, o Data elemento contém dados não escapados. A saída do registo de dados utiliza o ToString método dos objetos de dados passados. |
Event |
None | Sempre presente. | Este elemento contém um evento traço. |
EventData |
None | Presente para registos de eventos. | Este elemento representa a entrada do parâmetro (message, args). Contém Data elementos com dados XML escapados que são criados ao chamar o TraceEvent método. |
EventID |
None | Sempre presente. | Este elemento representa a entrada do parâmetro (id). |
Execution |
ProcessID |
Depende da presença da ProcessId bandeira na TraceOutputOptions propriedade. | O ProcessID atributo é especificado no TraceEventCache. |
ThreadID |
Presente quando ProcessID estiver presente. |
O ThreadID atributo é especificado no TraceEventCache. |
|
Level |
None | Sempre presente. | Este elemento representa a entrada do parâmetro (o valor numérico de eventType). Valores de parâmetros superiores a 255 são fornecidos como um nível 8, que representa TraceEventType.Information. Os tipos Criticalde eventos de traço , Error, Warning, Information, e Verbose são produzidos como níveis 1, 2, 4, 8 e 10, respetivamente. |
LogicalOperationStack |
None | Depende da presença da LogicalOperationStack bandeira na TraceOutputOptions propriedade. | Só pode existir uma operação lógica. Portanto, os valores são escritos como LogicalOperation nós sob o LogicalOperationStack elemento. |
OpCode |
None | Presente quando Level for superior a 255. |
Este elemento representa tipos de eventos Trace que têm valores numéricos superiores a 255. Start, Stop, Suspend, Resume, ou Transfer são produzidos como níveis 1, 2, 4, 8 e 10, respetivamente. |
Provider |
GUID |
Sempre presente. | Sempre vazio. |
RenderingInfo |
Culture |
Sempre presente. | Este atributo representa uma cadeia de recursos para o tipo de evento. É sempre "en-EN\". |
System |
Name |
Sempre presente. | |
TimeCreated |
SystemTime |
Depende da presença da DateTime bandeira na TraceOutputOptions propriedade. | O tempo é o valor da TraceEventCache.DateTime propriedade. Esta propriedade é expressa como Tempo Universal Coordenado |
TimeStamp |
None | Depende da presença da Timestamp bandeira na TraceOutputOptions propriedade. | Este elemento é especificado no TraceEventCache. |
UserData |
None | Presente para registos de dados. | Este elemento contém Data elementos com dados TraceData fornecidos pelo utilizador, fornecidos pelo utilizador, sem escape. |
A tabela seguinte mostra os caracteres que são escapados na saída XML. O escape ocorre em todos os elementos e atributos, exceto no UserData elemento, que contém dados fornecidos pelo utilizador e não escapados. O UserData elemento resulta das chamadas ao TraceData método.
| Personagem fugida | Value |
|---|---|
| & | & |
| < | < |
| > | > |
| " | " |
| |' | |
| 0xD | |
| 0xA |
Construtores
| Name | Description |
|---|---|
| EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption, Int64, Int32) |
Inicializa uma nova instância da EventSchemaTraceListener classe com o nome especificado e o tamanho do buffer especificados, usando o ficheiro especificado com a política de retenção de logs especificada, tamanho máximo e número de ficheiros como destinatário da saída de depuração e rastreamento. |
| EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption, Int64) |
Inicializa uma nova instância da EventSchemaTraceListener classe com o nome especificado e o tamanho do buffer especificados, usando o ficheiro especificado com a política de retenção de registos e o tamanho máximo especificados como destinatário da saída de depuração e rastreamento. |
| EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption) |
Inicializa uma nova instância da EventSchemaTraceListener classe com o nome especificado e o tamanho do buffer especificados, usando o ficheiro especificado com a política de retenção de registos como destinatário da saída de depuração e rastreamento. |
| EventSchemaTraceListener(String, String, Int32) |
Inicializa uma nova instância da EventSchemaTraceListener classe com o nome especificado e o tamanho do buffer especificados, usando o ficheiro especificado como destinatário da saída de depuração e rastreamento. |
| EventSchemaTraceListener(String, String) |
Inicializa uma nova instância da EventSchemaTraceListener classe com o nome especificado, usando o ficheiro especificado como destinatário da saída de depuração e rastreamento. |
| EventSchemaTraceListener(String) |
Inicializa uma nova instância da EventSchemaTraceListener classe, usando o ficheiro especificado como destinatário da saída de depuração e rastreamento. |
Propriedades
| Name | Description |
|---|---|
| Attributes |
Obtém os atributos personalizados do ouvinte de rastreio definidos no ficheiro de configuração da aplicação. (Herdado de TraceListener) |
| BufferSize |
Obtém o tamanho do buffer de saída. |
| Filter |
Obtém ou define o filtro de traço para o ouvinte de traços. (Herdado de TraceListener) |
| IndentLevel |
Obtém ou define o nível da recuação. (Herdado de TraceListener) |
| IndentSize |
Obtém ou define o número de espaços num reentro. (Herdado de TraceListener) |
| IsThreadSafe |
Recebe um valor que indica se o ouvinte de rastreio é seguro para threads. |
| MaximumFileSize |
Obtém o tamanho máximo do ficheiro de log. |
| MaximumNumberOfFiles |
Obtém o máximo de ficheiros de registo. |
| Name |
Obtém ou define um nome para este TraceListener. (Herdado de TraceListener) |
| NeedIndent |
Obtém ou define um valor que indica se deve indentar a saída. (Herdado de TraceListener) |
| TraceLogRetentionOption |
Obtém a opção de retenção do registo de rastreio para o ficheiro. |
| TraceOutputOptions |
Obtém ou define as opções de saída do traço. (Herdado de TraceListener) |
| Writer |
Obtém ou define o escritor de texto subjacente que escreve no ficheiro de log. |
Métodos
| Name | Description |
|---|---|
| Close() |
Fecha o ficheiro de registo deste ouvinte para que deixe de receber saída de rastreamento ou depuração. |
| CreateObjRef(Type) |
Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Dispose() |
Liberta todos os recursos utilizados pelo TraceListener. (Herdado de TraceListener) |
| Dispose(Boolean) |
Elimina este TextWriterTraceListener objeto. (Herdado de TextWriterTraceListener) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| Fail(String, String) |
Escreve informações de erro, incluindo uma mensagem de erro básica e uma mensagem de erro detalhada, no ficheiro de registo. |
| Fail(String) |
Emite uma mensagem de erro para o ouvinte que crias quando implementas a TraceListener classe. (Herdado de TraceListener) |
| Flush() |
Faz com que dados em buffer sejam escritos no log deste ouvinte. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso. (Herdado de MarshalByRefObject) |
| GetSupportedAttributes() |
Obtém os atributos de configuração XML personalizados que o ouvinte de rastreamento suporta. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| InitializeLifetimeService() |
Obsoleto.
Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso. (Herdado de MarshalByRefObject) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| TraceData(TraceEventCache, String, TraceEventType, Int32, Object) |
Escreve informação de traço, um único objeto de dados e informações de eventos no ficheiro de registo. |
| TraceData(TraceEventCache, String, TraceEventType, Int32, Object[]) |
Escreve informação de traço, múltiplos objetos de dados e informações de eventos no ficheiro de log. |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32, String, Object[]) |
Escreve informações de rastreamento, uma mensagem formatada e informações de eventos no ficheiro de log. |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32, String) |
Escreve informações de rastreamento, uma mensagem e informações de eventos no ficheiro de registo. |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32) |
Escreve informações de rastreio e evento para a saída específica do ouvinte. (Herdado de TraceListener) |
| TraceTransfer(TraceEventCache, String, Int32, String, Guid) |
Escreve informações de rastreio, incluindo a identidade de uma atividade relacionada, uma mensagem e informações de eventos, no ficheiro de registo. |
| Write(Object, String) |
Escreve um nome de categoria e o valor do método do objeto ToString() para o ouvinte que crias quando implementas a TraceListener classe. (Herdado de TraceListener) |
| Write(Object) |
Escreve o valor do método do objeto ToString() para o ouvinte que crias quando implementas a TraceListener classe. (Herdado de TraceListener) |
| Write(String, String) |
Escreve um nome de categoria e uma mensagem para o ouvinte que crias quando implementas a TraceListener classe. (Herdado de TraceListener) |
| Write(String) |
Escreve uma mensagem no ficheiro de registo sem fornecer qualquer informação adicional de contexto. |
| WriteIndent() |
Escreve o indentamento para o ouvinte que crias quando implementas esta classe, e redefine a NeedIndent propriedade para |
| WriteLine(Object, String) |
Escreve um nome de categoria e o valor do método do objeto ToString() para o ouvinte que crias quando implementas a TraceListener classe, seguido de um terminador de linha. (Herdado de TraceListener) |
| WriteLine(Object) |
Escreve o valor do método do ToString() objeto para o ouvinte que crias quando implementas a TraceListener classe, seguido de um terminador de linha. (Herdado de TraceListener) |
| WriteLine(String, String) |
Escreve um nome de categoria e uma mensagem para o ouvinte que crias quando implementas a TraceListener classe, seguido de um terminador de linha. (Herdado de TraceListener) |
| WriteLine(String) |
Escreve uma mensagem seguida do terminador de linha atual no ficheiro de registo sem fornecer qualquer informação adicional de contexto. |