Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os objetos My.Application.Log
e My.Log
facilitam a gravação de informações de registro e rastreamento nos 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, somente mensagens com gravidade "Information" e superior são passadas para os ouvintes de rastreamento, especificados na coleção 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 gravada no método WriteEntry
é passada para os métodos WriteLine
dos ouvintes de rastreamento do log:
Você pode alterar o comportamento do log e dos monitores 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.
Onde as mensagens são registradas
Se o assembly não tiver nenhum arquivo de configuração, os objetos My.Application.Log
e My.Log
gravarão na saída de depuração do aplicativo (por meio da classe DefaultTraceListener). Além disso, o My.Application.Log
objeto grava no arquivo de log do assembly (por meio da FileLogTraceListener classe), enquanto o My.Log
objeto grava na saída da página da Web ASP.NET (por meio 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 o Windows e clique em Saída. Na janela Saída , selecione Depurar na caixa Mostrar saída .
Por padrão, My.Application.Log
grava o arquivo de log no caminho dos dados do aplicativo do usuário. Você pode obter o caminho a partir 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:\Documentos e Configurações\username
\Dados do Aplicativo
Os valores de CompanyName
, ProductName
e ProductVersion
vêm das informações de assembly do aplicativo. A forma do nome do arquivo de log é AssemblyName.log, em que 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 está disponível quando o aplicativo tenta gravar no log, o formato do nome do arquivo de log será 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 Passo a passo: alterando o local em que 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 de 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 ficam localizadas no nó <system.diagnostics>
no nó <configuration>
principal do arquivo app.config. As informações de log são definidas em vários nós:
Os ouvintes do objeto
Log
são definidos no nó<sources>
chamado DefaultSource.O filtro de severidade do objeto
Log
é definido no nó<switches>
chamado DefaultSwitch.Os ouvintes de log são definidos no nó
<sharedListeners>
.
Exemplos de <sources>
, <switches>
, e <sharedListeners>
nodos 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 configurações são armazenadas no arquivo app.config, conforme mostrado nos exemplos acima. Depois de implantar seu aplicativo, você ainda poderá 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 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, na primeira vez que o 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 comutador antes do início do aplicativo. Normalmente, isso envolve ativar e desativar os objetos de interruptor ou alterar os níveis de rastreamento, e então reiniciar seu aplicativo.
Considerações de segurança
Considere o seguinte ao gravar dados no log:
Evite o vazamento de informações do usuário. Verifique se o aplicativo grava apenas as informações aprovadas no log. Por exemplo, pode ser aceitável que o log de aplicativos contenha nomes de usuário, mas não senhas de usuário.
Torne os locais de log 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 aplicativo gravar muitas informações no log, ele poderá preencher o log ou dificultar a localização de informações importantes.