¿Alguien tiene experiencia para ambos? ¿Cómo se comparan entre sí?
Estamos planeando usar uno de ellos para iniciar sesión en una aplicación empresarial.
Referencias
EDITAR: No tenemos dependencias existentes para nlog o log4net.
¿Alguien tiene experiencia para ambos? ¿Cómo se comparan entre sí?
Estamos planeando usar uno de ellos para iniciar sesión en una aplicación empresarial.
Referencias
EDITAR: No tenemos dependencias existentes para nlog o log4net.
Respuestas:
Recientemente me encargaron "crear un prototipo de inicio de sesión" para un próximo proyecto. No tenía ninguna experiencia en el marco de registro. Investigué, revisé tutoriales, creé aplicaciones de juguetes, etc. en Log4Net, NLog y Enterprise Library durante unos días. Regresé 3-4 semanas después y los reuní en una demostración coherente. Espero que algo de esto te sea útil.
Mi recomendación para nuestro proyecto es esta:
Eso se basa en estos hallazgos (¡opiniones!):
Entonces, obviamente, me gusta NLog hasta ahora. Sin embargo, no es suficiente para usarlo a pesar de tener otra solución disponible.
Una consideración clave que no se ha discutido mucho es el soporte y las actualizaciones.
Log4Net no se ha actualizado desde que se publicó la versión 1.2.10 el 19 de abril de 2006 .
Por el contrario, NLog ha sido activamente compatible desde 2006 y pronto lanzará NLog 2.0 que admite muchas plataformas que no existían cuando log4net se actualizó por última vez , como por ejemplo:
Habiendo tenido una experiencia con ambos marcos recientemente, pensé que podía compartir mis puntos de vista sobre cada marco.
Me pidieron que evaluara los marcos de registro para una aplicación web existente, reduje mis opciones a NLog (v2.0) y log4net (v1.2.11) después de pasar por varios foros en línea. Aquí están mis hallazgos:
Configurar / iniciar con NLog es muy fácil. Usted sigue el tutorial de Inicio en su sitio web y ya está. Tienes una idea justa, cómo podría ser con nlog. El archivo de configuración es tan intuitivo que cualquiera puede entender la configuración. Por ejemplo: si desea establecer el inicio de sesión interno, establezca el indicador en el nodo del encabezado del archivo de configuración de Nlog, que es donde esperaría que estuviera. En log4net, establece diferentes indicadores en la sección de configuración de aplicaciones de web.config.
En log4net, el registro interno no genera una marca de tiempo que es molesto. En Nlog, obtienes un buen registro con marcas de tiempo. Lo encontré muy útil en mis evaluaciones.
Filtros en log4net: es mejor que revise mi pregunta: filtro log4net: cómo escribir Y filtrar para ignorar los mensajes de registro y, si encuentra una respuesta / solución para esto, hágamelo saber. Entiendo, hay una solución para esta pregunta, ya que puede escribir su propio filtro personalizado. Pero algo que no está fácilmente disponible en log4net.
Rendimiento: registré alrededor de 3000 mensajes de registro en la base de datos utilizando un procedimiento almacenado. Solía simple for loop (int i = 0; i <3000; i ++ ... para registrar el mismo mensaje 3000 veces. Para las escrituras: log4net AdoAppender tomó casi el doble de tiempo que NLog.
Log4net no admite el apéndice asíncrono.
Fue una comparación suficiente para mí elegir NLog como marco de registro. :)
Para cualquiera que llegue tarde a este hilo, es posible que desee echar un vistazo a .Net Base Class Library (BCL). Muchas personas se perdieron los cambios entre .Net 1.1 y .Net 2.0 cuando se introdujo la clase TraceSource (circa 2005).
El uso de TraceSource es análogo a otros marcos de registro, con control granular de registro, configuración en app.config / web.config y acceso programático, sin la sobrecarga del bloque de aplicaciones empresariales.
También hay una serie de comparaciones flotando: "log4net vs TraceSource"
Para nosotros, la diferencia clave está en el rendimiento general ...
Eche un vistazo a Logger.IsDebugEnabled
NLog versus Log4Net, a partir de nuestras pruebas, NLog tiene menos sobrecarga y eso es lo que buscamos (cosas de baja latencia).
Saludos, Florian
Primero mira el resto de tu stack.
Si está utilizando NHibernate, utiliza Log4Net directamente. Otros marcos pueden tener otros registradores específicos que necesitan.
Aparte de eso: ambos funcionan bien.
Me he decidido por Log4Net yo mismo. Puede ser una tarea difícil de configurar, y si no está configurado correctamente, es difícil descubrir qué salió mal. Pero puede hacer que haga casi cualquier cosa que desee de un registrador.
Si no tiene un problema permanente con Log4Net, aquí hay un artículo que escribí sobre cómo comenzar con él: http://elegantcode.com/2007/12/07/getting-started-with-log4net/
Bueno ... utilicé la biblioteca Enterprise para las tareas de registro de la base de datos y ahora cambié a NLog debido a un cuello de botella en el rendimiento.
alguna información de comparación:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
Me hago eco de lo anterior y prefiero nLog. Entlib está innecesariamente hinchado.
Re: Log4net Una cosa que SIEMPRE me deja con log4net es olvidar agregar lo siguiente a global.asax para iniciar el componente:
log4net.Config.XmlConfigurator.Configure();
Si va aquí , puede encontrar una matriz integral que incluye las bibliotecas NLog y Log4Net, así como Enterprise Lib y otros productos.
Alguien podría argumentar que la matriz se realiza de manera de subrayar las características de la única biblioteca comercial presente en la matriz. Creo que es cierto, pero de todos modos fue útil para conducir mi elección versus NLog.
Saludos
Como noté, log4net bloquea sus archivos de salida todo el tiempo que la aplicación se está ejecutando, por lo que no puede eliminarlos. De lo contrario son similares.
Entonces prefiero NLog.
Plug descarado para un proyecto de código abierto que ejecuto, pero dada la animada discusión sobre qué marco de registro de .NET es más activo, pensé que publicaría un enlace obligatorio a Serilog .
Para usar dentro de una aplicación, Serilog es similar a (y se basa en gran medida) en log4net. Sin embargo, a diferencia de otras opciones de registro de .NET, Serilog trata de preservar la estructura de los eventos de registro para el análisis fuera de línea. Cuando escribes:
Log.Information("The answer is {Answer}", 42);
La mayoría de las bibliotecas de registro procesan inmediatamente el mensaje en una cadena. Serilog también puede hacer eso, pero conserva la { Answer: 42 }
propiedad para que más adelante, utilizando uno de varios almacenes de datos NoSQL, pueda consultar eventos adecuadamente en función del valor de Answer
.
Estamos cerca de un 1.0 y admitimos todas las plataformas modernas (.NET 4.5, Windows Store y Windows Phone 8).
También secundo NLog porque también funciona con código no administrado. Supongo que podría ser posible usar log4net y log4cxx juntos, pero NLog maneja tanto el código administrado como el no administrado de forma inmediata.
También miré en Common.Logging , una fachada que hace abstracción de la API de registro, es compatible con log4net, NLog y Entreprise Library. No creo que lo use, pero me gusta cómo usan lambdas para mejorar el rendimiento cuando el registro está deshabilitado (una característica compartida con NLog y probablemente otros).
También puede considerar el bloque de registro de la biblioteca de Microsoft Enterprise . Viene con buen diseñador.
Según mi experiencia, SmartInspect supera a NLog y log4net.
Es extremadamente fácil de usar, la documentación es excelente, y puede ver y filtrar mensajes registrados previamente con su visor interactivo de registros, lo cual es una gran ventaja para el mundo real.
Una cosa que me gusta son las vistas de datos con pestañas, como las pestañas del navegador en Chrome. Cada pestaña puede proporcionar una vista filtrada diferente del registro.