NLog vs log4net

Tanto NLog como log4net son dos opciones muy populares al seleccionar un marco de registro para aplicaciones.NET. En esta publicación, aprenderás todo sobre ambos marcos y las diferencias. Para aquellos de ustedes que no conocen uno o ambos marcos, comencemos con unas pocas palabras sobre cada marco.

log4net

Probablemente el marco de registro más antiguo del bloque, log4net ha existido prácticamente desde que se introdujo.NET. log4net fue originalmente un puerto interno de Apache log4j desarrollado por Neoworks Limited en 2001. El proyecto se trasladó rápidamente a Sourceforge (el GitHub de 2001) y fue lanzado bajo la licencia Apache. Desde entonces, log4net ha sido una de las opciones más populares en el mundo de.NET para agregar registros a aplicaciones.

log4net funciona con el concepto de anexadores, donde los mensajes de registro se pueden enrutar a diferentes almacenes de datos. A lo largo de los años se han implementado muchos agregadores, como el registro en el sistema de archivos, SQL Server, endpoints HTTP e incluso bases de datos NoSQL, sin embargo, al ser mensajes de texto no estructurados, log4net y NoSQL no van exactamente de la mano.

NLog

Aunque log4net se convirtió rápidamente en la opción predeterminada, comenzaron a aparecer alternativas. Probablemente el primer competidor real al dominio de log4net fue NLog. Desarrollado originalmente por Jarek Kowalski y con solicitudes de extracción de casi 100 personas, NLog es una gran alternativa. Mientras que log4net prácticamente se detuvo desde 2006, NLog siguió adelante. Mientras Jarek parecía tirar del enchufe al comenzar en Google, la comunidad parecía dar un paso adelante y los nuevos lanzamientos siguen fluyendo.

Al igual que log4net, NLog contiene varios destinos de registro y puede registrar mensajes en varios almacenes de datos.

Configuración

Todos los frameworks de registro necesitan algún tipo de configuración, para que el framework sepa qué registrar y dónde.

log4net

log4net se configura a través de su aplicación.archivo de configuración o una log4net dedicada.configuración:

NLog

NLog se puede configurar a través de XML y C#. La mayoría de la gente usa XML, ya que ha estado ahí desde el principio y ya que la API basada en C# no es tan agradable como los marcos más nuevos como Serilog.

Registro de mensajes

Cuando se trata de registrar mensajes desde su aplicación, log4net y NLog funcionan de forma bastante similar.

log4net

Los mensajes de registro se escriben utilizando la API de log4net:

var log = LogManager.GetLogger(typeof(Bar));log.Debug("Hello World");

Se puede adjuntar información de registro adicional a un mensaje de registro mediante una serie de opciones contextuales diferentes:

Aunque puede incrustar información directamente en mensajes de registro con log4net, el registro semántico no es compatible.

NLog

NLog proporciona una API similar a log4net para registrar mensajes en el conjunto de destinos configurado:

var logger = NLog.LogManager.GetCurrentClassLogger();logger.Debug("Hello World");

También se pueden adjuntar propiedades adicionales:

var msg = new LogEventInfo(LogLevel.Debug, "", "Hello World");msg.Properties.Add("Application", "MyCoolApp");logger.Debug(msg);

La versión reciente de NLog admite el registro semántico. Para agregar semántica a los mensajes de registro, use la sintaxis de llaves dobladas:

logger.Info("Order {orderid} created for {user}", 42, "Kenny");

Conclusión

Elegir un ganador no es el objetivo de este post. Ambos marcos de registro tienen sus propios beneficios e inconvenientes.

log4net

Ventajas