Para conhecer o log4Net há algumas boas referências:
São necessários 5 passos para utilizar o log4net:
1 - Instalar na aplicação o pacote nuget, que pode ser feito via comando no Package Manager Console:
Install-Package log4net
2 - Configurar no app.config ou web.config o log, seguindo a documentação
A vantagem de definir as configurações do log nesses arquivos é poder alterá-las em ambiente de execução, sem necessidade de compilar as soluções
<root>
O <root> é necessário para definir o nível(level) de log através do elemento (filtrando mensagens de relevância menor que a definida) e há 7 níveis:
- OFF - Nada é logado
- FATAL
- ERROR
- WARN
- INFO
- DEBUG
- ALL - Tudo é logado
Por exemplo, se o nível do log for definido para ERROR, somente mensagens de ERROR e FATAL serão armazenadas.
Além disso é necessário adicionar a tag <appender-ref> referenciando os appenders (Que falaremos abaixo)
No exemplo acima no estou utilizando:
- ConsoleAppender, ou seja, os logs sao enviados ao Console
- FileAppender, para salvar em disco (No qual configuerei para salvar somente a última execução com a tag <appendtofile value="false">)
RollingFileAppender (Para salvar um histórico de arquivo limitando quantidade e tamanho)
Uma propriedade comum que utilizei nesses appenders foram os elementos <layout> e o <conversionpattern>. Há algumas opções interessantes como:
- timestamp = Número de milissegundos desde o início da aplicação)
- %20timestamp = Para garantir que item a ser logado tenha no mínimo 20 caracteres, adicionando espaço. No exemplo acima, fará para o valor do timestamp
- %property{user} = que podemos definir uma propriedade definida no código
Para entender todas as demais configurações feitas, sugiro consultar a documentação que está no link de cada appender citado.
Também é possivel customizar appenders, como no exemplo deste link que faz um appender para CSV.
No vídeo ainda é demonstrado o o AdoNetAppender salvando informações na base de dados.
Há ainda a documentação de todos os filtros disponíveis.
3 Aplicar as configurações do app.config
Ao adicionar essa linha de código(para organizacao, no program.cs abaixo dos using), toda a configuração do log4net será feita lendo o arquivo de configuração (E recarregada em caso de alterações):
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Ou para a web:
4 Configurar a instância
Para configurar a instância, são indicadas 2 formas:
1) Se você utilizar a Framework anterior a 4.5, deverá instanciar em toda classe conforme abaixo:Dessa forma o log é instanciado por classe e você saberá onde o log foi feito. O parâmetro string que esta sendo passado por reflector facilitar o copiar e colar, mas gera uma pequena perda de desempenho (Ja que a instância estática é criada uma vez por cada classe)
2) A partir da framework 4.5 é possivel resolver o nome do log em momento de compilacao, utilizando o código abaixo:
O código do LogHelper está disponível aqui:
5 Efetuar log
A parte mais fácil é utilizar o log. Basta utilizar a instância criada na classe e chamar os métodos:
- Debug()
- Info()
- Warn()
- Error()
- Fatal()