Partilhar via


Trabalhando com logs de aplicativos no Visual Basic

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

Como as mensagens são registradas

Primeiro, a gravidade da mensagem é verificada com a propriedade Switch da propriedade TraceSource do log. Por padrão, apenas mensagens de gravidade "Informativo" e superior são passadas para os destinatários de rastreio, especificados na coleção do log TraceListener. 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 escreve a mensagem.

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

Diagrama que mostra o meu registo de chamadas.

Você pode alterar o comportamento do log e das escutas de rastreamento alterando o ficheiro de configuração da aplicação. O diagrama a seguir mostra a correspondência entre as partes do log e o arquivo de configuração.

Diagrama que mostra Minha configuração de log.

Onde as mensagens são registradas

Se o assembly não tiver ficheiro de configuração, os objetos My.Application.Log e My.Log gravam na saída de depuração (pela classe DefaultTraceListener). 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 a partir 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 propriedade FullLogFileName do objeto DefaultFileLogWriter. 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 CompanyName, ProductName e ProductVersion vêm das informações de montagem 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 for necessário mais do que um ficheiro de log, como quando o log original está indisponível e a aplicação tenta gravar no log, o formato para o nome do ficheiro de log será AssemblyName-iteration.log, onde iteration é um número 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 objeto Log estão definidos no nó <sources> chamado DefaultSource.

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

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

Exemplos de <sources>, <switches> e <sharedListeners> nós são mostrados 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, como 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.confige deve residir na mesma pasta que o arquivo executável. Para um aplicativo Web, este é o arquivo de 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.

Ver também