Passo a passo: Filtrando a saída My.Application.Log (Visual Basic)
Este passo a passo demonstra como alterar a filtragem de log padrão para o My.Application.Log
objeto, para controlar quais informações são passadas do Log
objeto para os ouvintes e quais informações são gravadas pelos ouvintes. Você pode alterar o comportamento de log mesmo depois de criar o aplicativo, porque as informações de configuração são armazenadas no arquivo de configuração do aplicativo.
Introdução
Cada mensagem gravada My.Application.Log
tem um nível de gravidade associado, que os mecanismos de filtragem usam para controlar a saída do log. Este aplicativo de exemplo usa My.Application.Log
métodos para gravar várias mensagens de log com diferentes níveis de gravidade.
Para criar o aplicativo de exemplo
Abra um novo projeto Visual Basic Windows Application.
Adicione um botão chamado Button1 ao Form1.
No manipulador de Click eventos para Button1, adicione o seguinte código:
' Activity tracing information My.Application.Log.WriteEntry("Entering Button1_Click", TraceEventType.Start) ' Tracing information My.Application.Log.WriteEntry("In Button1_Click", TraceEventType.Information) ' Create an exception to log. Dim ex As New ApplicationException ' Exception information My.Application.Log.WriteException(ex) ' Activity tracing information My.Application.Log.WriteEntry("Leaving Button1_Click", TraceEventType.Stop)
Execute o aplicativo no depurador.
Pressione Button1.
O aplicativo grava as seguintes informações na saída de depuração e no arquivo de log do aplicativo.
DefaultSource Information: 0 : In Button1_Click
DefaultSource Error: 2 : Error in the application.
Feche o aplicativo.
Para obter informações sobre como exibir a janela de saída de depuração do aplicativo, consulte Janela de saída. Para obter informações sobre o local do arquivo de log do aplicativo, consulte Passo a passo: Determinando onde My.Application.Log grava informações.
Nota
Por padrão, o aplicativo libera a saída do arquivo de log quando o aplicativo é fechado.
No exemplo acima, a segunda chamada para o WriteEntry método e a chamada para o WriteException método produz saída de log, enquanto a primeira e a última chamadas para o
WriteEntry
método não. Isso ocorre porque os níveis de gravidade deWriteEntry
eWriteException
são "Information" e "Error", ambos permitidos pelaMy.Application.Log
filtragem de log padrão do objeto. No entanto, eventos com níveis de gravidade "Start" e "Stop" são impedidos de produzir saída de log.
Filtrando para todos os ouvintes My.Application.Log
O My.Application.Log
objeto usa um SourceSwitch nome DefaultSwitch
para controlar quais mensagens ele passa dos WriteEntry
métodos e WriteException
para os ouvintes de log. Você pode configurar DefaultSwitch
no arquivo de configuração do aplicativo definindo seu valor como um dos valores de SourceLevels enumeração. Por padrão, seu valor é "Information".
Esta tabela mostra o nível de severidade necessário para Log gravar uma mensagem para os ouvintes, dada uma configuração específica DefaultSwitch
.
Valor DefaultSwitch | Severidade da mensagem necessária para a saída |
---|---|
Critical |
Critical |
Error |
Critical ou Error |
Warning |
Critical , Error ou Warning |
Information |
Critical , Error , Warning , ou Information |
Verbose |
Critical , Error , Warning , Information , ou Verbose |
ActivityTracing |
Start , Stop , Suspend , Resume , ou Transfer |
All |
Todas as mensagens são permitidas. |
Off |
Todas as mensagens são bloqueadas. |
Nota
Cada um dos WriteEntry
métodos e WriteException
tem uma sobrecarga que não especifica um nível de gravidade. O nível de gravidade implícito para a WriteEntry
sobrecarga é "Informação" e o nível de gravidade implícito para a WriteException
sobrecarga é "Erro".
Esta tabela explica a saída de log mostrada no exemplo anterior: com a configuração padrão DefaultSwitch
de "Information", apenas a segunda chamada para o WriteEntry
método e a chamada para o WriteException
método produzem saída de log.
Para registrar somente eventos de rastreamento de atividades
Clique com o botão direito do mouse em app.config no Gerenciador de Soluções e selecione Abrir.
-or-
Se não houver nenhum arquivo app.config:
No menu Projeto, escolha Adicionar Novo Item.
Na caixa de diálogo Adicionar Novo Item, escolha Arquivo de Configuração do Aplicativo.
Clique em Adicionar.
Localize a
<switches>
seção, que está na<system.diagnostics>
seção de nível<configuration>
superior.Encontre o elemento que adiciona
DefaultSwitch
à coleção de switches. Deve ser semelhante a este elemento:<add name="DefaultSwitch" value="Information" />
Altere o
value
valor do atributo para "ActivityTracing".O conteúdo do arquivo app.config deve ser semelhante ao seguinte XML:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- This section configures My.Application.Log --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="ActivityTracing" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/> </sharedListeners> </system.diagnostics> </configuration>
Execute o aplicativo no depurador.
Pressione Button1.
O aplicativo grava as seguintes informações na saída de depuração e no arquivo de log do aplicativo:
DefaultSource Start: 4 : Entering Button1_Click
DefaultSource Stop: 5 : Leaving Button1_Click
Feche o aplicativo.
Altere o
value
valor do atributo de volta para "Information".Nota
A
DefaultSwitch
configuração do switch controla apenasMy.Application.Log
. Isso não altera como o .NET System.Diagnostics.Trace e System.Diagnostics.Debug as classes se comportam.
Filtragem individual para ouvintes My.Application.Log
O exemplo anterior mostra como alterar a filtragem para todas as My.Application.Log
saídas. Este exemplo demonstra como filtrar um ouvinte de log individual. Por padrão, um aplicativo tem dois ouvintes que gravam na saída de depuração do aplicativo e no arquivo de log.
O arquivo de configuração controla o comportamento dos ouvintes de log, permitindo que cada um tenha um filtro, que é semelhante a um switch para My.Application.Log
. Um ouvinte de log exibirá uma mensagem somente se a gravidade da mensagem for permitida pelo filtro do DefaultSwitch
log e do ouvinte de log.
Este exemplo demonstra como configurar a filtragem para um novo ouvinte de depuração e adicioná-lo ao Log
objeto. O ouvinte de depuração padrão deve ser removido do Log
objeto, para que fique claro que as mensagens de depuração vêm do novo ouvinte de depuração.
Para registrar somente eventos de rastreamento de atividades
Clique com o botão direito do mouse em app.config no Gerenciador de Soluções e escolha Abrir.
-or-
Se não houver nenhum arquivo app.config:
No menu Projeto, escolha Adicionar Novo Item.
Na caixa de diálogo Adicionar Novo Item, escolha Arquivo de Configuração do Aplicativo.
Clique em Adicionar.
Clique com o botão direito do mouse em app.config no Gerenciador de Soluções. Escolha Abrir.
Localize a
<listeners>
seção com o<source>
name
atributo "DefaultSource", que está sob a<sources>
seção . A<sources>
seção está sob a<system.diagnostics>
seção, na seção de nível<configuration>
superior.Adicione este elemento à
<listeners>
seção:<!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/>
Localize a
<sharedListeners>
seção, na<system.diagnostics>
seção , na seção de nível<configuration>
superior.Adicione este elemento a essa
<sharedListeners>
seção:<add name="NewDefault" type="System.Diagnostics.DefaultTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error" /> </add>
O EventTypeFilter filtro usa um dos valores de SourceLevels enumeração como seu
initializeData
atributo.O conteúdo do arquivo app.config deve ser semelhante ao seguinte XML:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- This section configures My.Application.Log --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> <!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="Information" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/> <add name="NewDefault" type="System.Diagnostics.DefaultTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error" /> </add> </sharedListeners> </system.diagnostics> </configuration>
Execute o aplicativo no depurador.
Pressione Button1.
O aplicativo grava as seguintes informações no arquivo de log do aplicativo:
Default Information: 0 : In Button1_Click
Default Error: 2 : Error in the application.
O aplicativo grava menos informações na saída de depuração do aplicativo devido à filtragem mais restritiva.
Default Error 2 Error
Feche o aplicativo.
Para obter mais informações sobre como alterar as configurações de log após a implantação, consulte Trabalhando com logs de aplicativos.