我正在尝试正确使用Ninject将log4net日志记录注入我的MVC3应用程序。我正在使用 Ninject.MVC3 包,所以我有NinjectMVC3类,它自动扩展App_Start方法并包含绑定所有依赖项的RegisterServices方法。我也有 Ninject.Extensions.Logging.Log4Net 包,但我不知道如何使用它。我已经知道如何在我的web.config中配置log4net,但不知道如何将此扩展用于DI。
我已阅读以下所有文章/帖子,但似乎都没有定义如何正确设置DI日志项目。
在http://dotnetdarren.wordpress.com/2010/07/29/logging-in-mvc-part-4-log4net/,达伦 提供了一篇很棒的文章,但似乎没有处理DI(至少我没有看到它)。
在Using Ninject to fill Log4Net Dependency, Remo Gloor在此声明扩展应该提供实现所需的所有内容,但它没有显示如何实例化它的代码。
https://github.com/ninject/ninject.extensions.logging/wiki/Using的ninject.extensions.logging文档充其量是非常有限的。我已多次重读它,但仍然没有看到如何在NinjectMVC3类中使用绑定注入,或者例如如何从我的控制器类调用记录器的具体示例。
在最有希望的文章中,Moosaka在Ninject.Extensions.Logging.Log4net unexpected behavior提供了一些很棒的代码,但是当我尝试它时,我在ILogger logger = new Logger(type);
的LoggerFactory中收到编译错误,指出“无法访问受保护的构造函数'Logger'这里”。此外,他声称“把整个烂摊子扔进一个单独的类库”。这是否意味着整个单独的项目?
我只是迷失在所有不同的选项和日期的帖子中,并希望在我的MVC3项目中如何使用Ninject和Log4Net进行Dependancy Injection的任何输入。此外,如果它很重要,我的所有Ninject代码都在我的域项目中,但是日志记录需要从域和Web项目完成(并在我的单元测试中进行模拟)。任何帮助表示赞赏。
答案 0 :(得分:9)
除正常的log4net配置外,您不必配置任何其他内容。
您所要做的就是在任何想要记录的地方注入ILogger。 https://github.com/ninject/ninject.extensions.logging/wiki/Using