Share via


Trabalhando com logs de aplicativos em Visual Basic

Os objetos My.Applicaton.Log e My.Log facilitam gravar logs e rastrear informações para logs.

Como mensagens são registradas

Em primeiro lugar, a gravidade da mensagem é verificada com a propriedade Switch da propriedade TraceSource do log.Por padrão, apenas as mensagens da gravidade "Information" e superior são passados para os ouvintes de rastreamento, especificados no conjunto TraceListener do log.Em seguida, cada ouvinte compara a gravidade da mensagem com a propriedade Switch do ouvinte.Se a gravidade da mensagem for alta o suficiente, o ouvinte gravará a mensagem.

O diagrama a seguir mostra como uma mensagem escrita para o método WriteEntry obtém passagem para os métodos WriteLine dos ouvintes de rastreamento do log:

Você pode alterar o comportamento do log e dos ouvintes de rastreamento alterando arquivo de configuração do aplicativo.O diagrama a seguir mostra a correspondência entre as partes do log e do arquivo de configuração.

Onde as mensagens são registradas

Se o assembly não tem arquivo de configuração, os objetos My.Application.Log e My.Log gravam a saída de depuração do aplicativo (por meio da classe DefaultTraceListener ).Além disso, o objeto My.Application.Log grava no arquivo de log do assembly (por meio da classeFileLogTraceListener), enquanto o objeto My.Log grava na página da Web da saída do ASP.NET (por meio da classe WebPageTraceListener).

A saída de depuração pode ser exibida na janela Visual Studio Output quando executando seu aplicativo no modo de depuração.Para abrir a janela Output, clique no item de menu Debug, aponte para Windows e, em seguida, clique em Saída.Na janela Output, selecione Debug na caixa Show output from.

Por padrão, My.Application.Log grava o arquivo de log no caminho para dados do aplicativo do usuário.Você pode obter o caminho da propriedade FullLogFileName de Propriedade DefaultFileLogWriter (My.Application.Log e My.Log).O formato desse caminho é da seguinte maneira:

BasePath\CompanyName\ProductName\ProductVersion

Um valor para BasePath típico é da seguinte maneira.

C:\Documents and Settings\username\Application Data

Os valores de CompanyName, ProductName e ProductVersion são provenientes das informações do assembly do aplicativo.A forma do nome do arquivo de log é AssemblyName.log, onde AssemblyName é o nome do arquivo do assembly sem a extensão.Se mais de um arquivo de log é necessário, tal quando o log original não está disponível quando o aplicativo tenta escrever no log, o formato do nome do arquivo de log é AssemblyName-iteration.log, onde iteration é um Integer positivo.

Você pode substituir o comportamento padrão, adicionando ou alterando os arquivos de configuração do computador e do aplicativo.Para obter mais informações, consulte Demonstra Passo a passo: Alterando onde My.aplicativo.log grava informações.

Configurando as Definições do log

The Log objeto tem uma implementação padrão que funciona sem um arquivo de configuração do aplicativo, app.config. Para alterar os padrões, você deve adicionar um arquivo de configuração com as novas configurações.Para obter mais informações, consulte Demonstra Passo a passo: Filtragem de saída do My.aplicativo.log.

Essas seções de configuração de log estão localizadas no nó <system.diagnostics> no nó principal <configuration> do arquivo de configuração.Informações de log são definidas em vários nós:

  • Os ouvintes para o objeto Log são definidos no nó <sources> chamado DefaultSource.

  • O filtro de gravidade do objeto Log é definido no nó <switches> denominado DefaultSwitch.

  • Os ouvintes do log são definidos no nó <sharedListeners>.

Exemplos de <sources>, <switches>, e nós <sharedListeners> são mostradas no código a seguir:

<configuration>
  <system.diagnostics>
    <sources>
      <source name="DefaultSource" switchName="DefaultSwitch">
        <listeners>
          <add name="FileLog"/>
        </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"
      />
    </sharedListeners>
  </system.diagnostics>
</configuration>

Alterando Configurações de Log após a Implantação

Ao desenvolver um aplicativo, suas configurações são armazenadas no arquivo app.config, conforme os exemplos acima.Depois que você implanta seu aplicativo, você ainda pode configurar o log, editando a arquivo de configuração.Em um aplicativo baseado no Windows, o nome desse arquivo é applicationName.exe.config, e ele devem residir na mesma pasta que o arquivo executável.Para um aplicativo da Web, ele é o arquivo web.config associado ao projeto.

Quando o seu aplicativo executa o código que cria uma instância de uma classe pela primeira vez, ele verifica o arquivo de configuração para obter informações sobre o objeto.Para o objeto Log, isso ocorre na primeira vez que o objeto Log é acessado.O sistema examina o arquivo de configuração somente uma vez para qualquer objeto em particular — na primeira vez seu aplicativo cria o objeto.Portanto, você precisará reiniciar o aplicativo para que as alterações tenham efeito.

Em um aplicativo implantado, você ativa o código de rastreamento reconfigurando objetos de troca antes de iniciar seu aplicativo.Normalmente, isso envolve ativar e desativar os objetos de troca ou, alterar os níveis de rastreamento e em seguida, reiniciar o seu aplicativo.

Considerações sobre segurança

Considere o seguinte ao gravar dados para o log:

  • Evite vazamento de informações do usuário. Certifique-se de que seu aplicativo grava somente informações aprovadas para o log.Por exemplo, ele pode ser aceitável para o log do aplicativo conter nomes de usuário, mas não senhas de usuário.

  • Torne os locais de log seguros. Qualquer log que potencialmente contém informações sigilosas deve ser armazenado em um local seguro.

  • Evite informações enganosas. Em geral, o seu aplicativo deve validar todos os dados inseridos por um usuário antes de usar esses dados.Isso inclui gravar dados no log do aplicativo.

  • Evite a negação de serviço. Se seu aplicativo grava muitas informações no log, ele pôde preencher o log ou tornar difícil de encontrar informações importantes.

Consulte também

Conceitos

Registrando Informações de log do aplicativo

Referência

Objeto My.Application.Log

Objeto My.Log