Partilhar via


Trabalhando com logs de aplicativos no Visual Basic

Os My.Application.Log objetos e My.Log facilitam a gravação de informações de registro e rastreamento em logs.

Como as mensagens são registradas

Primeiro, a gravidade da mensagem é verificada com a Switch propriedade da propriedade do TraceSource log. Por padrão, apenas mensagens de gravidade "Informações" e superior são passadas para os ouvintes de rastreamento, especificados na coleção do TraceListener log. Em seguida, cada ouvinte compara a gravidade da mensagem com a propriedade do Switch ouvinte. Se a gravidade da mensagem for alta o suficiente, o ouvinte escreve a mensagem.

O diagrama a seguir mostra como uma mensagem gravada no WriteEntry método é passada para os WriteLine métodos dos ouvintes de rastreamento do log:

Diagram that shows My log call.

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

Diagram that shows My log configuration.

Onde as mensagens são registradas

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

A saída de depuração pode ser exibida na janela Saída do Visual Studio ao executar seu aplicativo no modo de depuração. Para abrir a janela Saída , clique no item de menu Depurar , aponte para Windows e clique em Saída. Na janela Saída, selecione Depurar na caixa Mostrar saída de.

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

BasePath\CompanyName\ProductName\ProductVersion

Um valor típico para BasePath é o seguinte.

C:\Documents and Settings\username\Dados do aplicativo

Os valores de , ProductNamee ProductVersion vêm das informações de CompanyNamemontagem 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 for necessário, como quando o log original não estiver disponível quando o aplicativo tentar gravar no log, o formulário para o nome do arquivo de log será AssemblyName-iteration.log, onde iteration é um positivo .Integer

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 Passo a passo: alterando onde My.Application.Log grava informações.

Definindo configurações de log

O 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 Passo a passo: Filtrando a saída My.Application.Log.

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

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

  • O filtro de gravidade para o Log objeto é definido no <switches> nó chamado DefaultSwitch.

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

Exemplos de , <switches>e <sharedListeners> nós são mostrados <sources>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 as configurações de log após a implantação

Quando você desenvolve um aplicativo, suas definições de configuração são armazenadas no arquivo app.config, conforme mostrado nos exemplos acima. Depois de implantar seu aplicativo, você ainda pode configurar o log editando o arquivo de configuração. Em um aplicativo baseado no Windows, o nome desse arquivo é applicationName.exe.config e deve residir na mesma pasta que o arquivo executável. Para um aplicativo Web, este é o arquivo Web.config associado ao projeto.

Quando 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 Log objeto, isso acontece na primeira vez que o Log objeto é acessado. O sistema examina o arquivo de configuração apenas uma vez para qualquer objeto específico — a primeira vez que seu aplicativo cria o objeto. Portanto, talvez seja necessário reiniciar o aplicativo para que as alterações entrem em vigor.

Em um aplicativo implantado, você habilita o código de rastreamento reconfigurando objetos de switch antes que o aplicativo seja iniciado. Normalmente, isso envolve ligar e desligar os objetos de interruptor ou alterar os níveis de rastreamento e, em seguida, reiniciar o aplicativo.

Considerações de Segurança

Considere o seguinte ao gravar dados no log:

  • Evite vazar informações do usuário. Certifique-se de que seu aplicativo grava apenas informações aprovadas no log. Por exemplo, pode ser aceitável que o log do aplicativo contenha nomes de usuário, mas não senhas de usuário.

  • Torne os locais de registro seguros. Qualquer log que contenha informações potencialmente confidenciais deve ser armazenado em um local seguro.

  • Evite informações enganosas. Em geral, 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 o seu aplicativo gravar muitas informações no log, ele poderá preenchê-lo ou dificultar a localização de informações importantes.

Consulte também