alternative log4net nlog

alternative - log4net vs. Nlog



nlog vs serilog (15)

¿Alguien tiene experiencia para ambos? ¿Cómo se apilan unos contra otros?

Estamos planeando usar uno de ellos para iniciar sesión en una aplicación empresarial.

Referencias:

log4net

nlog

EDITAR: No tenemos dependencias existentes para nlog o log4net.



Como he notado, log4net bloquea sus archivos de salida todo el tiempo que se ejecuta la aplicación, por lo que no puede eliminarlos. De lo contrario son similares.

Así que prefiero NLog.


Creo que el consenso general es que nlog es un poco más fácil de configurar y usar. Sin embargo, ambos son muy capaces.


Habiendo tenido una experiencia con ambos marcos recientemente, pensé que podía compartir mis opiniones 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 conclusiones:

  1. Configuración / inicio con NLog es muy fácil. Pasas por el tutorial de Primeros pasos en su sitio web y listo. Tienes una buena idea, 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, configure 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 ajustes de aplicaciones de web.config.

  2. En log4net, el registro interno no genera una marca de tiempo que sea molesta. En Nlog, obtienes un buen registro con marcas de tiempo. Lo encontré muy útil en mis evaluaciones.

  3. Filtros en log4net: es mejor que revise esta 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 que 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.

  4. Rendimiento: registré alrededor de 3000 mensajes de registro en la base de datos utilizando un procedimiento almacenado. Usé simple para bucle (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.

  5. Log4net no soporta appender asíncrono.

Fue suficiente comparación para que yo eligiera NLog como el marco de registro. :)


Me hago eco de lo anterior y prefiero nLog. Entlib está innecesariamente hinchado.

Re: Log4net Una cosa que SIEMPRE me consigue con log4net es olvidar agregar lo siguiente a global.asax para iniciar el componente:

log4net.Config.XmlConfigurator.Configure();


Para cualquier persona que llegue tarde a este hilo, es posible que desee volver a mirar la Biblioteca de clases básicas (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 que flotan alrededor: "log4net vs TraceSource"


Para nosotros, la diferencia clave está en el rendimiento general ...

Eche un vistazo a Logger.IsDebugEnabled en NLog versus Log4Net, de nuestras pruebas, NLog tiene menos sobrecarga y eso es lo que buscamos (cosas de baja latencia).

Saludos, Florian


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 puede hacer eso también, pero conserva la propiedad { Answer: 42 } para que más adelante, utilizando uno de una serie de almacenes de datos NoSQL, pueda consultar correctamente los eventos según el valor de Answer .

Estamos cerca de la versión 1.0 y admitimos todas las plataformas modernas (.NET 4.5, Windows Store y Windows Phone 8).


Primero mira el resto de tu pila.

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 establecido en Log4Net a mí mismo. Puede ser una molestia configurarlo, y si no está configurado correctamente, es una molestia descubrir qué salió mal. Pero puede hacer que haga casi cualquier cosa que quiera con 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/


Recientemente me encargaron "crear un prototipo de algún loggin ''" para un próximo proyecto. No tenía ninguna experiencia en el marco de registro. Investigué, realicé tutoriales, hice aplicaciones de juguetes, etc. en Log4Net, NLog y Enterprise Library por unos días. Regresé 3-4 semanas más tarde y los reunimos en una demostración coherente. Esperemos que algo de esto te sea útil.

Mi recomendación para nuestro proyecto es esta:

  1. Utilice una fachada de registro (por ejemplo, SimpleLoggingFacade , SimpleLoggingFacade ) para evitar dependencias directas.
  2. Si terminamos usando Enterprise Library para otras instalaciones, también lo usamos para el registro.
  3. Si terminamos usando algo con una dependencia en Log4Net, use Log4Net.
  4. Si ninguno de los anteriores, utilice NLog. Que prefiero.

Eso se basa en estos hallazgos (opiniones!):

  • Los 3 marcos son capaces y pueden hacer algunas cosas sofisticadas. Queremos una solución de calidad, pero, francamente, no necesitamos un rendimiento ultra alto ni 60 tipos de receptores de eventos.
  • Los 3 tienen conceptos básicos muy similares.
  • Cada uno tiene sus propios trucos geniales, como enrutamiento realmente avanzado o nombres de archivo de registro dinámico, truncamiento de archivos, etc.
  • Los 3 están bastante bien documentados a su manera.
  • Para ser un completo nuevo como yo, al principio todos eran un poco incómodos. No hay diferencias drásticas aquí por lo básico. Lo superé.
  • Al revisar las cosas unas semanas después, NLog fue claramente el más fácil de reanudar. Necesitaba muy poco repasarlo. Con Log4Net, tuve que revisar algunos ejemplos en línea para comenzar. Con EntLib, me rendí e hice los tutoriales de nuevo desde cero, estaba totalmente perdido.
  • No pude averiguar cómo hacer que EntLib haga algunas cosas como iniciar sesión en la base de datos. Podría ser fácil, pero estaba más allá de mi límite de tiempo.
  • Log4Net y NLog tienen una pequeña huella en el código. EntLib es spam, pero de todos modos usaría una fachada sobre él.
  • Accidentalmente configuré erróneamente EntLib y me lo dijo en tiempo de ejecución. Log4Net no lo hizo. No tuve una mala configuración accidental con NLog.
  • EntLib viene con un bonito editor de aplicaciones .config, que necesitas al 100%. NLog tiene un esquema de archivo de configuración para que obtenga "intellisense". Log4Net viene con nada.

Así que obviamente me gusta NLog hasta ahora. Sin embargo, no es suficiente para usarlo a pesar de tener otra solución disponible.


Según mi experiencia, SmartInspect supera tanto a NLog como a log4net.

Es extremadamente fácil de usar, la documentación es excelente, y puede ver y filtrar los mensajes registrados previamente con su visor de registro interactivo, que es una gran ventaja del mundo real.

Una cosa que me gusta son las vistas con pestañas de los datos, como las pestañas del navegador en Chrome. Cada pestaña puede proporcionar una vista filtrada diferente del registro.


Si va here , puede encontrar una matriz completa que incluye las librerías NLog y Log4Net, así como Enterprise Lib y otros productos.

Alguien podría argumentar que la matriz se hace de una manera que subraya las características de la única biblioteca comercial presente en la matriz. Creo que es cierto, pero fue útil de todos modos para impulsar mi elección frente a NLog.

Saludos




Yo segundo NLog también porque funciona con código no administrado también. 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é Common.Logging , una fachada que hace abstracción de la api de registro, que admite 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 con otras).