2009-08-11 16 views
32

Estoy investigando cómo implementar el registro en mi aplicación C#: es una biblioteca de clases DLL. ¿Qué marcos de registro son los más utilizados, lo que daría a los usuarios de mi archivo DLL la mayor flexibilidad y capacidad de configuración? ¿Hay un equivalente de C# de log4j?¿Cuál es el marco de registro más utilizado en C#?

+1

le daría ReflectInsight un intento http: // http: //insightextensions.codeplex.com/ – code5

+0

Hay una lista de los marcos de registro aquí: https://github.com/quozd/awesome-dotnet/blob /master/README.md#logging –

Respuesta

29

Equivalente de log4j para la plataforma .NET es log4net y supongo que es ampliamente utilizado.


edición (no por el autor): En caso de que no desee utilizar log4net, aquí hay una gran variedad de alternativas de https://github.com/quozd/awesome-dotnet/blob/master/README.md#logging:

  • Essential Diagnostics - Extiende las características incorporadas de espacio de nombres System.Diagnostics para proporcionar el registro flexibles
  • NLog - Nlog - Advanced .NET y Silverlight registro
  • Logazmic - El código abierto Nlo g visor para Windows
  • ELMAH - ELMAH Sitio Oficial
  • Elmah MVC - Elmah para MVC
  • Logary - Logary es un registro de objetivos múltiples, la localización y verificación de salud biblioteca de la métrica de rendimiento, para Mono y .NET. Respuesta de .NET a DropWizard. Admite muchos objetivos, creados para micro servicios.
  • Log4Net - La biblioteca log4net Apache es una herramienta para ayudar a las declaraciones de registro de salida del programador a una variedad de destinos de salida
  • Serilog - Una biblioteca de registro sin sentido para la era NoSQL. Combina lo mejor del registro de diagnóstico tradicional y estructurado en un paquete fácil de usar.
  • StackExchange.Exceptional - gestor de errores utilizado para la red Pila Cambio
  • Semantic Logging Application Block (SLAB) - Extiende las características incorporadas de System.Diagnostics.Tracing espacio de nombres (clase EventSource) para conectarse a varios sumideros incluyendo tablas de Azure, bases de datos, archivos (JSON, XML, texto). Admite el registro en proceso y fuera de proceso a través de ETW, y Rx para el filtrado/agregación de eventos en tiempo real.
  • Foundatio - Una API de registro fluido que se puede utilizar para registrar mensajes en toda la aplicación.
  • Exceptionless - Excepción Cliente .NET
  • Loupe - Registro y supervisión centralizados de .NET. [patentado][Nivel libre]
  • elmah.io - Nube de registro para aplicaciones .NET web usando ELMAH. Encuentra errores antes de salir a la luz. Potente búsqueda, API, integración con Slack, GitHub, Visual Studio y más. [Free for OSS][$]
  • BugSnag - registra errores. Incluye información de diagnóstico útil, como seguimiento de pila, sesión, lanzamiento, etc. Tiene un nivel gratuito. [Libre para OSS] [$]
+2

Uso log4net en casi todas mis aplicaciones .NET. Sin embargo, mis clases no contienen una referencia a log4net directamente, oculto esta preocupación de infraestructura detrás de una interfaz y uso la inyección de dependencia. – JohnRudolfLewis

+0

También estamos usando log4net. Es simplemente genial. Increíblemente flexible, increíblemente rápido. –

+0

use log4net y nunca mire hacia atrás ... ¿No SO utiliza log4net? –

5

han utilizado Nlog éxito en numerosos proyectos.

1

Estoy usando NLog de años con éxito y es un proyecto muy bien hecho.

3

Usamos nuestras propias clases de registro, implementadas llamando al log4net. Esto nos permite aprovechar este marco flexible y ampliamente utilizado al tiempo que evitamos miles de referencias directas al mismo en el código fuente.

-1

Las personas han estado usando Enterprise Library ampliamente. Pero puede ser cierto que los desarrolladores están cambiando a otros productos en estos días.

Lo verificaría y vería si tiene la funcionalidad necesaria que necesitas y no demasiada hinchazón.

2

Enterprise Library. Es robusto y viene directamente de Microsoft con todas sus mejores prácticas incluidas. Lo usamos en todos nuestros proyectos. Es muy flexible y hay una herramienta de interfaz de usuario que puede usar en caso de que no quiera perder el control de la administración desde el archivo de configuración.

+1

Downvoting porque Enterprise Library no es robusto. Es lento, agrega una sobrecarga ridícula, y la API tampoco es genial. –

+0

@John, independientemente de su opinión sobre la biblioteca empresarial, todavía es probablemente la más utilizada (probablemente porque proviene directamente de Microsoft) y proporciona la flexibilidad y la capacidad de configuración necesarias según la pregunta. Creo que es una respuesta perfectamente válida a la pregunta. – desigeek

+0

¿Qué lo hace ampliamente utilizado? EntLib.Logging tiene 280K de descargas (https://www.nuget.org/packages/EnterpriseLibrary.Logging/) en NuGet comparado con 2.6M para log4net (https://www.nuget.org/packages/log4net/). De hecho, NLog tiene 1.5M y Serilog tiene 130K.Mi principal objeción es que lo llamaste Robusto. Todos los equipos con los que trabajé lamentamos usarlo. Por cierto, "es lento y agrega una sobrecarga ridícula" NO es una opinión. –

3

log4net es casi seguro el más común.

pero yo uso Common.Logging - http://netcommon.sourceforge.net/ ya que me da la flexibilidad

Hay una variedad de implementaciones para el registro .NET actualmente en uso , log4net, Enterprise Library registro, Nlog, por nombrar el más popular. La desventaja de tener implementación diferente es que no comparten una interfaz común y por lo tanto imponen una implementación de registro particular en los usuarios de su biblioteca.

biblioteca Common.Logging introduce una simple abstracción para permitirle seleccionar una aplicación específica tala en tiempo de ejecución. Por lo tanto, usted puede diferir la decisión de qué biblioteca de registro particular utilizar hasta el despliegue . Los adaptadores se utilizan para conectando un sistema de registro particular en Common.Logging.

+0

¿Cuál es el beneficio de diferir la decisión? – BKSpurgeon

+1

Guau, esto es más de 8 años de edad. Como dijo Common.Logging (y todavía lo hace), puede aplazar su decisión hasta la implementación. Por ejemplo; ¿Tal vez quieras etiquetar en blanco tu sistema? Y los devops para la empresa que quiere alojarlo prefieren Enterprise Library Logging, mientras que otro equipo de devops prefiere log4net. – gef

+0

Estoy interesado en usar Common.Logging (gracias por la sugerencia, BTW), pero estoy cansado de la sobrecarga de rendimiento en la que incurre la capa de abstracción/resolución en tiempo de ejecución. ¿Quizás conozcas algún punto de referencia relacionado con esto? –

Cuestiones relacionadas