Como: Usar TraceSource e filtros com listeners de rastreamento
Um dos novos recursos no .NET estrutura versão 2.0 é um sistema de rastreamento avançado.A premissa básica não é alterado: mensagens de rastreamento são enviadas através de switches para ouvintes, que relatar os dados para uma meio de saída associados.A diferença principal para a versão 2.0 é que rastreamentos podem ser iniciados por meio de instâncias do TraceSource classe. TraceSource o objetivo é funcionar sistema autônomo um sistema de rastreamento avançado e pode ser usado no lugar dos métodos estático do mais antigo Trace e Debug classes de rastreamento. O familiarTrace e Debug ainda existem classes, mas a prática recomendada é usar o TraceSource classe de rastreamento.
Este tópico descreve o uso de um TraceSource juntamente com um arquivo de configuração do aplicativo. É possível, embora não recomendada para rastreamento usando um TraceSource sem o uso de um arquivo de configuração. Para obter informações sobre o rastreamento sem um arquivo de configuração, consulte Como: Criar e inicializar fontes de rastreamento.
Criar e inicializar sua fonte de rastreamento
A primeira etapa para instrumentar um aplicativo com o rastreamento é criar uma fonte de rastreamento.Em projetos grandes com vários componentes, você pode criar uma fonte de rastreamento separado para cada componente.A prática recomendada é usar o nome do aplicativo para o nome da fonte de rastreamento.Isso facilitará manter separados os rastreamentos diferentes.O código a seguir cria uma nova fonte de rastreamento (mySource) e chama um método (Activity1) que rastreia eventos. As mensagens de rastreamento são escritas por ouvinte de rastreamento padrão.
using System; using System.Diagnostics; using System.Threading; namespace TraceSourceApp { class Program { private static TraceSource mySource = new TraceSource("TraceSourceApp"); static void Main(string[] args) { Activity1(); mySource.Close(); return; } static void Activity1() { mySource.TraceEvent(TraceEventType.Error, 1, "Error message."); mySource.TraceEvent(TraceEventType.Warning, 2, "Warning message."); } } }
Criar e inicializar listeners de rastreamento e filtros
O código no primeiro procedimento não identifica programaticamente os ouvintes de rastreamento ou filtros.O código sozinho resultados em rastreamento de mensagens que estão sendo gravados o ouvinte de rastreamento padrão.Para configurar os ouvintes de rastreamento específica e os filtros associados, edite o arquivo de configuração que corresponde ao nome do seu aplicativo.Nesse arquivo, você pode adicionar ou remover um ouvinte conjunto as propriedades e o filtro para um ouvinte ou remover ouvintes.O seguinte arquivo de configuração de exemplo mostra como inicializar um ouvinte de rastreamento do console e um ouvinte de rastreamento do Texto writer para fonte de rastreamento é criado no procedimento anterior.Além de configurar os ouvintes de rastreamento, o arquivo de configuração cria filtros para ambos os ouvintes e cria um comutador de fonte para fonte do rastreamento.Duas técnicas são mostradas para adicionar ouvintes de rastreamento: Adicionar o ouvinte diretamente à fonte de rastreamento e adicionar um ouvinte para a coleção de ouvintes compartilhado e adicioná-lo pelo nome à origem de rastreamento.Os filtros identificados para dois ouvintes são inicializados com níveis diferentes de fonte.Isso resultados em algumas mensagens que estão sendo escritas por apenas um dos dois ouvintes.
<configuration> <system.diagnostics> <sources> <source name="TraceSourceApp" switchName="sourceSwitch" switchType="System.Diagnostics.SourceSwitch"> <listeners> <add name="console" type="System.Diagnostics.ConsoleTraceListener"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Warning"/> </add> <add name="myListener"/> <remove name="Default"/> </listeners> </source> </sources> <switches> <add name="sourceSwitch" value="Warning"/> </switches> <sharedListeners> <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="myListener.log"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error"/> </add> </sharedListeners> </system.diagnostics> </configuration>
Para alterar o nível no qual um ouvinte grava uma mensagem de rastreamento
O arquivo de configuração inicializa as configurações para fonte do rastreamento no momento em que o aplicativo é inicializado.Para alterar essas configurações você deve alterar o arquivo de configuração e reiniciar o aplicativo ou atualizar o aplicativo usando o programaticamenteTrace.Refresh método. O aplicativo pode alterar dinamicamente as propriedades definidas pelo arquivo de configuração para substituir quaisquer configurações especificadas pelo usuário.Por exemplo, convém garantir que mensagens críticas sempre são enviadas para um arquivo de texto, independentemente das definições de configuração corrente.
using System; using System.Diagnostics; using System.Threading; namespace TraceSourceApp { class Program { private static TraceSource mySource = new TraceSource("TraceSourceApp"); static void Main(string[] args) { Activity1(); // Change the event type for which tracing occurs. // The console trace listener must be specified // in the configuration file. First, save the original // settings from the configuration file. EventTypeFilter configFilter = (EventTypeFilter)mySource.Listeners["console"].Filter; // Then create a new event type filter that ensures // critical messages will be written. mySource.Listeners["console"].Filter = new EventTypeFilter(SourceLevels.Critical); Activity2(); // Allow the trace source to send messages to listeners // for all event types. This statement will override // any settings in the configuration file. mySource.Switch.Level = SourceLevels.All; // Restore the original filter settings. mySource.Listeners["console"].Filter = configFilter; Activity3(); mySource.Close(); return; } static void Activity1() { mySource.TraceEvent(TraceEventType.Error, 1, "Error message."); mySource.TraceEvent(TraceEventType.Warning, 2, "Warning message."); } static void Activity2() { mySource.TraceEvent(TraceEventType.Critical, 3, "Critical message."); mySource.TraceInformation("Informational message."); } static void Activity3() { mySource.TraceEvent(TraceEventType.Error, 4, "Error message."); mySource.TraceInformation("Informational message."); } } }
Consulte também
Tarefas
Como: Criar e inicializar fontes de rastreamento