Bancos de dados, arquivos de texto, arquivos XML, etc. podem ser usados para registrar logs de operação do aplicativo. O que apresento aqui é o uso de arquivos XML para registrar logs de operações.
Acho que usar XML para registrar logs de operações tem os seguintes benefícios:
1. Ele não ocupa espaço no banco de dados e pode excluir logs históricos de operações à vontade.
2. O DataTable pode ler facilmente arquivos XML, e o DataTable também pode ser facilmente salvo como arquivos XML.
3. É conveniente visualizar o log. Você pode abrir diretamente o arquivo XML para visualizá-lo ou pode lê-lo no DataTable e visualizá-lo por meio do programa.
O método para usar arquivos XML para registrar logs de operações no VS2005 é o seguinte:
1. Crie um conjunto de dados: JobLogDataSet.xsd
Isso inclui 6 campos: TraceLevel (tipo de log), Usuário (usuário), DateTime (tempo de operação), Módulo (módulo), Função (função) e Mensagem (mensagem).
Se não for suficiente, adicione você mesmo. TraceLevel (tipo de log) refere-se a Info, Warning, Error, Trance e Off.
2. Crie o tipo de log /// <resumo>
/// Tipo de registro
/// </sumário>
enum público LogType
{
/// <resumo>
/// Informação
/// </sumário>
Informações,
/// <resumo>
/// avisar
/// </sumário>
Aviso,
/// <resumo>
/// erro
/// </sumário>
Erro,
/// <resumo>
/// Monitorando
/// </sumário>
Rastreamento,
/// <resumo>
/// Sem registro
/// </sumário>
Desligado
}
2. Como escrever um log
/// <resumo>
/// Grava o registro
/// </sumário>
/// <param name="traceLevel">Tipo de log (Info, Warning, Error, Trance, Off)</param>
/// <param name="usuário">Usuário</param>
/// <param name="module">Módulo</param>
/// <param name="function">Função</param>
/// <param name="message">Mensagem</param>
public static void WriteLog (LogType logType, string usuário, módulo string, função string, mensagem string)
{
tentar
{
// Tipo LogType.Off não grava logs
if (logType == LogType.Off)
return;
JobLogDataSet.JobLogDataTable t = new JobLogDataSet.JobLogDataTable();
// Um arquivo de log (arquivo .XML) todos os dias, o nome do arquivo de log é: JobLog yyyy-MM-dd.xml
string jobLogFile = AppDomain.CurrentDomain.BaseDirectory + "JobLog " +
DateTime.Today.ToString("aaaa-MM-dd") + ".xml";
if (!File.Exists(jobLogFile))
t.WriteXml(jobLogFile);
// Ler logs do arquivo .XML
t.ReadXml(jobLogFile);
//Adicionar um log
JobLogDataSet.JobLogRow r = t.NewJobLogRow();
r.TraceLevel = logType.ToString();
r.Usuário = usuário;
r.Datetime = DateTime.Agora;
r.Módulo = módulo;
r.Função = função;
r.Mensagem = mensagem;
t.AddJobLogRow(r);
// Salva o log no arquivo XML
t.WriteXml(jobLogFile);
}
pegar (exceção)
{}
}
3. Como ler registros
/// <resumo>
/// Ler registro
/// </sumário>
/// <returns>Retorna o DataTable para leitura do log</returns>
público estático JobLogDataSet.JobLogDataTable ReadLog()
{
JobLogDataSet.JobLogDataTable jobLogDataTable = novo JobLogDataSet.JobLogDataTable();
tentar
{
// Obtém todos os arquivos de log JobLog*.xml da pasta do aplicativo
string[] jobLogFiles = Directory.GetFiles(
AppDomain.CurrentDomain.BaseDirectory, "JobLog*.xml", SearchOption.TopDirectoryOnly);
// Ler cada registro de log no log DataTable);
foreach (string jobLogFile em jobLogFiles)
{
if (Arquivo.Exists(jobLogFile))
{
//Lê todos os arquivos de log em DataTable temporário
JobLogDataSet.JobLogDataTable t = novo JobLogDataSet.JobLogDataTable();
t.ReadXml(jobLogFile);
//Importa registros de log para o log principal DataTable
foreach (JobLogDataSet.JobLogRow r em t)
jobLogDataTable.ImportRow(r);
}
}
//Retorna o log lido DataTable
retornar jobLogDataTable;
}
pegar (exceção)
{
retornar jobLogDataTable;
}
}
4. Sempre que você precisar escrever um log, basta chamar o método WriteLog diretamente.