sexta-feira, 8 de janeiro de 2010

Visão geral do Log4net

Ferramenta para gerar log em aplicações .net Log4net

Uma aplicação de tamanho médio pode gerar milhares de linhas de request para logs e com isto muito esforço também é feito para medir o impacto e custo de fazer o log. Log4net pretende ser rápido e flexível.
O usuário precisa estar ciente das seguintes questões de performance:
1. A performance de loggin quando ele é desativado. Quando o loggin é desativado por inteiro ou apenas para um conjunto de níveis, o custo de requisição de log consiste de uma invocação de método mais uma comparação de inteiros.
Entretanto, a invocação do método envolve um custo escondido da construção do parametro.
Por exemplo, para alguns logs, escrevendo,
log.Debug("Número: " + i + " é " + entry[i].tostring();
incorre no custo de construir a mensagem parametro, convertendo ambo, inteiro i e entry[i] para strings, e concatenando strings intermediários, independente se a mensagem será feito log ou não. Este custo de construção de parametro pode ser forte e depende do número e tipo de parametros envolvidos.
Para enviar o custo de construção de parametros escreva:
if(log.IsDebugEnabled)
{
log.Debug("Entry number: " + i + " is " + entry[i].ToString());
}

FileAppender e RollingFileAppender
Estes appenders escrevem mensagens de logs em arquivos. Uma configuração típica para um FileAppender pode parecer com a seguinte:






Segue abaixo um resumo das configurações de atributos mais comuns para FileAppender:
- file: o caminho completo ou relativo para o arquivo de log;
- appendToFile: um campo booleano que indica se o arquivo de log será incrementado (true) ou sobrescrito (false). Se falso, o arquivo será sobrescrito na inicialização do log4net. Caso não seja especificado, o log será incrementado.
- immediateFlush: valor booleano indicando se é para o arquivo de log TextWriter depois de cada mensagem de log ser escrita. O padrão é true (enviar cada mensagem depois de ser gerada);
- lockingModel: permite a você controlar se o arquivo de log estará travado durante a execução da aplicação.
É indicado não usar o FileAppender e sim o RollingFileAppender. O arquivo de log gerenciado por FileAppender permite o crescimento do arquivo sem limites. O RollingFileAppender permite um gerenciamento básico do arquivo, configurando size- ou date-boxing do arquivo de log.









Existem diversas configurações para o RollingFileAppender:
> rollingStyle: controla como os arquivos de log são elaborados, e pode ser um dos seguintes valores:
- Once: o arquivo de log é recriado todas as vezes que o log4net é inicializado (tipicamente quando a aplicação é iniciada);
- Size: o arquivo de log é recriado quando atinge um tamanho determinado;
- Date: o arquivo de log é recriado com base na data atual;
- composite: o arquivo de log é recriado com base nos limites de tamanho e na data atual;
> maximumFileSize: a capacidade do arquivo de log. É uma expressão de tamanho no formato "#(KB|MB|GB)". Por exemplo "100KB" ou "10MB";
> maxSizeRollBackups: o número máximo de backups de arquivos de log. Indica o número máximo quando o rollingStyle é SIZE; quando o rollingStyle é COMPOSITE, isto indica o máximo número de roll-offs mantidos por dia; Esta propriedade não tem efeito quando rollingStyle é ONCE ou DATE;
> datePattern: é usado para recriar arquivos com base em datas. o valor deste parametro precisa aderir ao formato usado pela classe SimpleDateFormat;
> staticLogFileName: se true esta opção indica que o arquivo de log receberá todos os registros de maneira incremental sendo o backups através de cópias. E se false indica que o log4net irá gravar no último arquivo de log (ex: log-file1.txt, log-file2.txt..);
> countDirection: indica como a numeração de roll-off dos arquivos é gerenciada. Quando o parametro for >=, haverá uma numeração incremental no nome do arquivo, ex: log-file.txt.1, log-file.txt.2, etc..
Lembre que quando usar o file appender, o usuário executando o processo de logging precisa de premissões de escrita e/ou modificação para arquivos de log. Além disso, o arquivo de log será criado caso não exista mas não será criado o diretório informado caso não exista. E caso o file appender não seja criado a aplicação funcionará sem problemas.
Utilizando Múltiplos Appenders
usar múltiplos appenders é uma tarefa simples de especificar cada appender no root logger, como no exemplo abaixo:





Você pode utilizar quantos appenders quiser, sabendo que cada appender irá usar mais processamento.

------------------
Exemplos de Log4net criados durante teste:






Nenhum comentário:

Postar um comentário