net - remarks c#
¿Hay una fachada de registro para el mundo.NET? (7)
Soy algo nuevo en la pila .NET y me preguntaba si existe un equivalente a slf4j para la plataforma .NET. Para mí, iniciar sesión en una Fachada y poder intercambiar las implementaciones de registro según sea necesario solo tiene sentido. Además, las API de envoltura disponibles en slf4j me han ahorrado muchas veces cuando necesitaba usar una biblioteca de terceros que estaba codificada contra un único marco de registro que no estaba usando.
¿Existe un proyecto que actúe como fachada entre los registradores como log4net, nLog y Enterprise Library? ¿Hay envoltorios que me permiten atajar llamadas a esas bibliotecas y dirigirlas a otra biblioteca? ¿Debo comenzar un proyecto de código abierto para hacer esto yo mismo? ¿Esta pregunta es un duplicado porque no sé la manera correcta de preguntar? Por el contrario, ¿la forma más común de hacer esto es mediante el uso de orientación orientado a los aspectos?
Actualización para .NET Core:
- Microsoft: Microsoft.Extensions.Logging.Abstractions - Microsoft.Extensions.Logging . .NETCore compatible
- Registro común: https://github.com/net-commons/common-logging . El soporte de .NETCore está en versión beta (v.3.4) a partir de junio de 2017
Dado que esto fue escrito, apareció otro contenedor de registro interesante llamado Fody.Anotar . A partir de hoy, es probablemente el más completo de todos. La mayoría de los otros, pero Logging Facility, están bastante desactualizados y solo admiten los madereros más antiguos.
Tiene adaptadores para NLog, Log4Net, Serilog, CommongLogging, Catel, LibLog, MetroLog, NServiceBus y Splat, y le permite crear un adaptador para su propia biblioteca.
Puedes usar Nuget para instalarlo. Busque los paquetes Anotar. *. Fody, por ejemplo Anotar.NLog.Fody.
De alguna manera encontré todas las soluciones aquí insatisfactorias, especialmente para bibliotecas / API. Aunque nunca pensé que lo haría, en realidad escribí un "registrador" de código abierto que debería manejar la mayoría de las preocupaciones.
Tal vez puedas echar un vistazo a Dapplo.Log , puedes obtenerlo desde NuGet.
La idea es usar Dapplo.Log en su biblioteca, y el proyecto que utiliza esto puede entonces dirigir (cuando sea necesario) cualquier salida de registro a su registrador de elección. Los ejemplos para dirigir el resultado se pueden encontrar en las pruebas, con implementaciones de algunos marcos principales here .
Probablemente no sea perfecto (todavía), y doy la bienvenida a solicitudes o tickets.
Disculpa, usé esto y olvidé que no era la versión de Apache. En realidad, es de código abierto y parte de un proyecto llamado infraestructura común. También se llama registro común . Funciona con MS Enterprise, log4net y otros. Funciona bien.
Echa un vistazo a la instalación de explotación forestal de Castle Windsor.
El código base está here . Adaptador Log4net here . Adaptador NLog here .
Se agregó un adaptador para Serilog .
Sin los adaptadores, hay soporte para ConsoleLogger, DiagnosticsLogger, StreamLogger y NullLogger.
Es bastante fácil escribir adaptadores en cualquier otro marco de trabajo.
Estoy incorporando Simple Logging Facade porque parece ser compatible con The Object Guy''s Logging Framework para .Net recién sacado de la caja.
Yo tuve el mismo problema. Después de Ninject.Extensions.Logging los recomendados arriba, descubrí Ninject.Extensions.Logging
Lo cual es genial ya que una fachada tiene el mejor sentido en combinación con DI de todos modos
Viene con proxies para NLog, NLog2 y log4net .
Aquí hay un buen ejemplo sobre cómo usarlo en combinación con NLog: http://blog.tonysneed.com/2011/10/09/using-nlog-with-dependency-injection/
Entiendo que esta pregunta ya tiene un par de años, pero debido a la exhaustividad para otros usuarios, aún así decidí publicar esta ''Solución''