Vários métodos de gerenciamento de log em .Net
Log são uma parte indispensável do aplicativo. Ele pode não apenas registrar o status de execução do aplicativo, mas também registrar alguns BUGs para facilitar a atualização e modificação do aplicativo.
Existem várias maneiras de gerenciar logs em .Net.
1. Registro do banco de dados.
2. Registro de texto.
3. Log de eventos do sistema.
Em primeiro lugar, é simples e conveniente de usar para logs de banco de dados. Não vou discutir muito aqui. Acredito que qualquer pessoa que tenha escrito projetos relacionados a dados usará dados para registrar alguns logs. No entanto, a única desvantagem é que você deve primeiro garantir que o link do seu banco de dados esteja correto.
No entanto, esta garantia não é inevitável, por isso discutirei aqui as outras duas situações, logs de texto e logs de eventos do sistema.
Registro de texto:
É simples de usar e fácil de visualizar. A desvantagem é que não é conveniente fazer um grande número de logs e não é conveniente visualizar e analisar o conteúdo do log. No entanto, ele ainda pode ser usado em alguns locais onde o log do banco de dados não é adequado. Por exemplo, a saída de algumas mensagens de teste, uma pequena quantidade de logs de alguns componentes independentes, etc.
Em circunstâncias normais, para facilitar a gestão, os ficheiros de registo são classificados em unidades de dias. Desta forma, os arquivos podem ser facilmente gerenciados. Por exemplo: você pode saber quando esse log está pelo nome do seu arquivo e então pode simplesmente fazer uma consulta semelhante a um banco de dados, e o gerenciamento também é conveniente. Afinal, o texto é muito simples para o sistema.
.Net possui uma classe de diagnóstico que pode adicionar texto ao Trace e Debug na forma de escuta. Desta forma, toda a sua saída direcionada ao Trace e Degug será gravada no arquivo. Este é um método muito bom.
usando System.Diagnostics;
Debug.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(DateTime.Now.ToString("aaaaMMdd")+"..log"));
Console.Out
));
Trace.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(DateTime.Now.ToString("aaaaMMdd")+"..log"));
Trace.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(Console.Out));
A diferença aqui é: Trace pode ser usado em Release, enquanto Debug só pode ser usado em Debug.
Acho que entre todos os logs de texto, o método acima é o mais útil. Você só precisa criar outra classe de gerenciamento de log.
Claro, você também deve observar que o monitor precisa ser atualizado após 24 horas. Você deve limpar o monitor atual e adicionar um novo. Também é simples.
Outro método é escrever você mesmo o texto para gerenciamento. Este método é um pouco mais problemático, mas não é difícil.
Porém, além de serem inconvenientes para realizar muito trabalho de log, os logs de texto também apresentam um problema fatal: conflitos de processo!
Como o registro de texto bloqueia o arquivo de texto que está sendo gravado, outros programas que desejam gravar no arquivo encontrarão erros. Em circunstâncias normais, se houver apenas uma cópia do programa em execução e o log for processado como um objeto estático global, não haverá grandes problemas. Mas a segunda cópia do programa não será iniciada porque o arquivo não pode ser aberto.
Este não é um problema insolúvel, apenas certifique-se de ter uma cópia do programa. Se não for garantido, então é um pouco complicado, então não discutiremos mais isso aqui. Discutiremos esse assunto na próxima vez, quando tivermos oportunidade.
Para o problema acima, quero abandonar temporariamente o log de texto e usar o log de eventos do sistema para lidar com isso.
Log de eventos do sistema:
Existe uma classe EventLog em .net, que está diretamente associada ao log de eventos do sistema.
Simples:
EventLog.WriteEntry("LogSource","Este é um log de teste.");
Você pode gravar um evento no sistema.
No entanto, usá-lo bem pode ser um pouco complicado. Primeiro, o método acima gravará um log de eventos no Aplicativo do sistema, e o padrão é o tipo Informação. Isso não favorece o gerenciamento. Você pode consultar os logs na ferramenta de gerenciamento e encontrará um grande número de logs. É impossível encontrar um pequeno log escrito por você mesmo.
No entanto, .Net nos fornece vários métodos para gerenciar melhor os logs.
1. Adicione um novo LogSource.
O que é LogSource? Na verdade, para simplificar, é uma marca de classificação de logs. Por exemplo, você pode usar um programa para recuperar logs cujo LogSource é o conteúdo especificado de uma só vez. Dessa forma, desde que você se lembre do nome da fonte, poderá ler e categorizar os logs.
Por padrão, ao gravar logs diretamente usando a função estática do EventLog, você precisa especificar um LogSource. Se o LogSource não existir, ele criará um automaticamente no Aplicativo. Portanto, criar um LogSource é tão simples quanto isso.
2. Adicione um novo registro.
O que é Log? O Log aqui se refere à grande classificação de log no log de eventos do sistema. Geralmente, o sistema possui três logs: Aplicativo, Sistema e Serviço, cada um com uma Fonte diferente, formando assim um sistema de log.
Você não pode criar um Log de forma independente, pois o .NET não fornece nenhum método para criar um Log, você só pode usar a função: CreateEventSource(string, string)
Para criar uma Fonte, se você fizer isso: CreateEventSource("MySource", "MyLog");
Você verá uma classe MyLog adicional no gerenciador de log e, em seguida, escreverá o log assim:
EventLog.WriteEntry("MySource","Este é um log de teste.");
Você pode escrever um registro na categoria MyLog, para poder gerenciar bem seus próprios logs.
O que precisa ser explicado é:
Se a Fonte já existir, a criação falhará. Nota: Não importa qual Log de Fonte, desde que o nome da Fonte já exista, sua criação falhará. Por exemplo: Se houver um log de "Fonte1" no Aplicativo, você não poderá criar um log denominado "Fonte1" em outros Logs. Além disso: os logs que você cria usando o programa não podem ser excluídos no gerenciador de logs (as mensagens podem ser excluídas, mas as categorias de log não podem ser excluídas). O método é que você ainda pode usar um programa para excluí-lo ou excluí-lo do registro. Sua localização: [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlog]
Dê uma olhada no registro, talvez você entenda alguma coisa.
A última etapa é usar o objeto de instância de log para gravar o log. Você pode especificar um nome de log e um nome de origem para gravar logs, mas esteja ciente de que o log e a origem devem corresponder, caso contrário ocorrerá um erro. Isso é um pouco mais complicado do que registrar diretamente usando métodos estáticos, mas você tem mais liberdade.
A desvantagem do log de eventos do sistema é que o log só é salvo por três meses e é difícil de gerenciar. Seria melhor se você pudesse gerenciar o servidor diretamente ou executá-lo localmente; caso contrário, você mesmo teria que escrever algum código para gerenciar os logs. Claro, se alguns logs importantes puderem ser exportados para outros arquivos.
Seus benefícios são muitos:
1. Não há necessidade de conexão ao banco de dados, a eficiência será maior e não haverá problema de falha de acesso ao banco de dados.
2. Não haverá conflitos de processo. É um log do sistema. Não importa qual aplicativo seja, ele pode gravar logs.
3. Disponíveis globalmente, os logs podem ser gravados diretamente, não importa onde estejam e são legíveis. Portanto, pode ser considerada uma plataforma de comunicação por mensagens. (Claro, talvez apenas aqueles com alguns problemas cerebrais façam isso.) No entanto, só quero explicar: o log escrito pelo processo A pode ser lido diretamente pelo processo B.
Ok, desta vez é tudo sobre o log.
http://www.cnblogs.com/WuCountry/archive/2006/08/22/483090.html