Estoy tratando de usar correctamente Ninject para inyectar log4net logging en mi aplicación MVC3. Estoy usando el paquete Ninject.MVC3, así que tengo la clase NinjectMVC3 que extiende automáticamente el método App_Start y contiene el método RegisterServices que vincula todas las dependencias. También tengo el paquete Ninject.Extensions.Logging.Log4Net, pero no sé cómo usarlo. Ya sé cómo configurar log4net en mi web.config, pero no sé cómo usar esta extensión para DI.Cómo configurar correctamente Ninject.Extensions.Logging.Log4Net en mi proyecto de MVC3
He leído todos los siguientes artículos/publicaciones, pero ninguno de ellos parece definir cómo configurar correctamente un proyecto para el registro DI.
En http://dotnetdarren.wordpress.com/2010/07/29/logging-in-mvc-part-4-log4net/, Darren proporciona un gran artículo, pero no parece tratar con DI (al menos no lo veo).
En Using Ninject to fill Log4Net Dependency, Remo Gloor establece aquí que las extensiones deben proporcionar todo lo que se necesita para la implementación, pero no muestra el código de cómo crear una instancia.
La documentación para ninject.extensions.logging en https://github.com/ninject/ninject.extensions.logging/wiki/Using es muy limitada en el mejor de los casos. Lo he vuelto a leer muchas veces, y aún no veo cómo usar bind Injection en la clase NinjectMVC3, o ejemplos concretos de cómo llamar al registrador desde mi clase de controlador, por ejemplo.
En el artículo más prometedor, Moosaka proporciona un gran código en Ninject.Extensions.Logging.Log4net unexpected behavior, pero cuando lo intento, me sale un error de compilación en el LoggerFactory en ILogger logger = new Logger(type);
que dice "No se puede acceder constructor protegido 'Logger' aquí". Además, declara que "guarde todo este lío en una biblioteca de clases separada". ¿Eso significa como un proyecto separado?
Me estoy perdiendo en todas las diferentes opciones y publicaciones con fecha y me gustaría cualquier información sobre cómo usar Dependancy Injection con Ninject y Log4Net en mi proyecto MVC3. Además, si es importante, todo mi código de Ninject está en mi proyecto de dominio, pero el registro debe realizarse tanto desde el dominio como desde el proyecto web (y se burló en mis pruebas unitarias). Cualquier ayuda es apreciada.
Gracias Remo. No me di cuenta de que no necesitaba ningún código adicional para inyectar el registrador. ¿Aún necesito llamar a 'log4net.Config.XmlConfigurator.Configure();' en mi archivo global.asax.cs? De todos modos, me estoy encontrando con problemas en la actualización a Ninject 3.0.0 que parece ser necesaria. Publiqué mi problema en su página a http://www.planetgeek.ch/2011/12/30/new-features-and-changes-of-ninject-3-0/comment-page-1/#comment-2120 . Si puede responder a eso, ¡lo agradecería enormemente! – bigmac
El registro funciona. Gracias una tonelada Remo! Para otros, aún tiene que llamar al método Configure en global.asax.cs, pero no se necesita ningún otro código. Sin embargo, tenga en cuenta que tendrá que actualizar a Ninject 3.0.0 y que podría causar otros efectos secundarios (como me pasó a mí) a cosas como Ninject.Extensions.Conventions. – bigmac