Alguém tem experiência para ambos? Como eles se comparam?
Estamos planejando usar um deles para efetuar logon em um aplicativo corporativo.
Referências:
EDIT: Não temos dependências existentes para nlog ou log4net.
Alguém tem experiência para ambos? Como eles se comparam?
Estamos planejando usar um deles para efetuar logon em um aplicativo corporativo.
Referências:
EDIT: Não temos dependências existentes para nlog ou log4net.
Respostas:
Recentemente, fui encarregado de "criar um protótipo de um loggin" para um próximo projeto. Eu não tive nenhuma experiência na estrutura de log. Eu pesquisei, passei por tutoriais, fiz aplicativos de brinquedos etc. no Log4Net, NLog e Enterprise Library por alguns dias. Voltei 3-4 semanas depois e reuni-los em uma demonstração coesa. Espero que isso seja útil para você.
Minha recomendação para o nosso projeto é esta:
Isso é baseado nessas descobertas (opiniões!):
Então, obviamente, eu gosto do NLog até agora. Porém, não é suficiente usá-lo, apesar de ter outra solução disponível.
Uma consideração importante que não foi muito discutida é o suporte e as atualizações.
O Log4Net não foi atualizado desde que a versão 1.2.10 foi publicada em 19 de abril de 2006 .
Por outro lado, o NLog tem suporte ativo desde 2006, em breve lançará o NLog 2.0, suportando muitas plataformas que não existiam quando o log4net foi atualizado pela última vez , como:
Tendo tido uma experiência com os dois frameworks recentemente, pensei em compartilhar meus pontos de vista sobre cada um deles.
Foi-me pedido que avaliasse as estruturas de registro para um aplicativo Web existente; reduzi minhas opções para NLog (v2.0) e log4net (v1.2.11) depois de passar por vários fóruns online. Aqui estão minhas descobertas:
A configuração / inicialização do NLog é fácil. Você segue o tutorial de Introdução no site deles e está pronto. Você tem uma idéia justa de como as coisas podem estar com o nlog. O arquivo de configuração é tão intuitivo que qualquer um pode entender a configuração. Por exemplo: se você deseja ativar o logon interno, defina o sinalizador no nó de cabeçalho do arquivo de configuração do Nlog, que é onde você esperaria. No log4net, você define diferentes sinalizadores na seção appSettings do web.config.
No log4net, o registro interno não gera timestamp, o que é irritante. No Nlog, você obtém um bom log com registros de data e hora. Achei muito útil nas minhas avaliações.
Filtros no log4net - É melhor verificar minha pergunta - filtro log4net - como escrever E filtrar para ignorar as mensagens de log e, se você encontrar uma resposta / solução para isso, informe-me. Entendo que existe uma solução alternativa para essa pergunta, pois você pode escrever seu próprio filtro personalizado. Mas algo que não está facilmente disponível no log4net.
Desempenho - registrei cerca de 3000 mensagens de log no banco de dados usando um procedimento armazenado. Eu usei simple for loop (int i = 0; i <3000; i ++ ... para registrar a mesma mensagem 3000 vezes. Para as gravações: log4net O AdoAppender levou quase o dobro do tempo que o NLog.
Log4net não suporta appender assíncrono.
Foi uma comparação suficiente para eu escolher o NLog como a estrutura de log. :)
Para quem chegar atrasado a esse segmento, consulte a .Net Base Class Library (BCL). Muitas pessoas perderam as alterações entre .Net 1.1 e .Net 2.0 quando o TraceSource classe foi introduzida (por volta de 2005).
O uso do TraceSource é análogo a outras estruturas de log, com controle granular de log, configuração em app.config / web.config e acesso programático - sem a sobrecarga do bloco de aplicativos corporativos.
Também existem várias comparações: "log4net vs TraceSource"
Para nós, a principal diferença está no desempenho geral ...
Dê uma olhada no Logger.IsDebugEnabled
NLog versus Log4Net, a partir de nossos testes, o NLog tem menos sobrecarga e é isso que estamos buscando (coisas de baixa latência).
Felicidades, Florian
Primeiro, observe o restante da sua pilha.
Se você estiver usando o NHibernate, ele utilizará o Log4Net diretamente. Outras estruturas podem ter outros registradores específicos de que precisam.
Fora isso: ambos funcionam bem.
Eu mesmo decidi pela Log4Net. Pode ser difícil de configurar e, se não estiver configurado corretamente, é difícil descobrir o que deu errado. Mas você pode fazê-lo fazer quase tudo o que você deseja de um criador de logs.
Se você não tem um problema permanente com a Log4Net, aqui está um artigo que escrevi sobre como começar: http://elegantcode.com/2007/12/07/getting-started-with-log4net/
Bem ... usei a biblioteca Enterprise para tarefas de log de banco de dados e agora mudei para o NLog devido a gargalo de desempenho.
algumas informações de comparação:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
Eu ecoo o acima e prefiro nLog. Entlib é desnecessariamente inchado.
Re: Log4net Uma coisa que SEMPRE me deixa com log4net é esquecer de adicionar o seguinte ao global.asax para iniciar o componente:
log4net.Config.XmlConfigurator.Configure();
Se você for aqui, poderá encontrar uma matriz abrangente que inclui as bibliotecas NLog e Log4Net, além da Enterprise Lib e outros produtos.
Alguém poderia argumentar que a matriz é feita de forma a sublinhar os recursos da única lib comercial presente na matriz. Eu acho que é verdade, mas de qualquer maneira foi útil conduzir minha escolha contra o NLog.
Saudações
Como notei, o log4net bloqueia seus arquivos de saída enquanto o aplicativo está em execução, portanto você não pode excluí-los. Caso contrário, eles são semelhantes.
Então, eu prefiro o NLog.
Plug vergonhoso para um projeto de código aberto que eu corro, mas, dada a animada discussão sobre qual estrutura de log do .NET é mais ativa, pensei em publicar um link obrigatório no Serilog .
Para usar em um aplicativo, o Serilog é semelhante ao (e se baseia fortemente) no log4net. Diferente de outras opções de log do .NET, no entanto, o Serilog trata de preservar a estrutura dos eventos de log para análise offline. Quando você escreve:
Log.Information("The answer is {Answer}", 42);
A maioria das bibliotecas de log imediatamente processa a mensagem em uma sequência. O Serilog também pode fazer isso, mas preserva a { Answer: 42 }
propriedade para que mais tarde, usando um de vários repositórios de dados NoSQL, você possa consultar adequadamente os eventos com base no valor de Answer
.
Estamos perto do 1.0 e suportamos todas as plataformas modernas (.NET 4.5, Windows Store e Windows Phone 8).
Eu também uso o NLog porque ele também funciona com código não gerenciado. Suponho que possa ser possível usar log4net e log4cxx juntos, mas o NLog lida com códigos gerenciados e não gerenciados imediatamente.
Também observei o Common.Logging , uma fachada que faz abstração da API de log, que suporta log4net, NLog e Entreprise Library. Acho que não vou usá-lo, mas gosto de como eles usam lambdas para melhorar o desempenho quando o log está desativado (um recurso compartilhado com o NLog e provavelmente outros).
Você também pode considerar o Bloco de Log da Microsoft Enterprise Library . Ele vem com um bom designer.
Com base na minha experiência, o SmartInspect supera o NLog e o log4net.
É extremamente fácil de usar, a documentação é excelente e você pode visualizar e filtrar mensagens registradas anteriormente com o visualizador de log interativo, o que é uma enorme vantagem no mundo real.
Uma coisa que eu gosto são as visualizações com guias dos dados, como as guias do navegador no Chrome. Cada guia pode fornecer uma visualização filtrada diferente do log.