2

我正在使用 NLog (v2.0) 尝试 Ninject 的日志记录扩展 (v3.0),根据我的阅读,我不应该配置任何东西,这就像自动魔法一样,我只需要要做的是在我需要的地方声明一个ILogger依赖项。

我保留了nlog.config我已经拥有的文件,并删除了所有创建记录器的代码,而是放入ILogger了我的类的构造函数中。

ActivationException在组合根处得到一个,...Ninject can't resolve ILogger

我错过了什么?

我所拥有的基本上归结为:

public static void Main(string[] args)
{
    // nothing special here, binds IMyApp to MyApp.
    using (var kernel = new StandardKernel(new NinjectConfig()))
    {
        var app = kernel.Get<IMyApp>(); // MyApp has a ILogger dependency **blows up here**
        app.Run(args);
    }
}

这是一个控制台应用程序,它的价值……日志记录扩展应该像这样工作吗?


文档说:

确保在请求类型实例之前让内核加载新的 Log4NetModule 或 NLogModule

但如果我这样做:

    using (var kernel = new StandardKernel(new NLogModule(), new NinjectConfig()))
    {
        ...

...ReSharper 不知道是什么NLogModule

4

1 回答 1

0

下载 nuget 包Ninject.Extensions.Logging是不够的。

您还需要下载 nuget 包Ninject.Extensions.Logging.nlog2,其中包含绑定接口NLogModule所需的类。ILogger

还有一个可用的用于 log4net 日志记录的 nuget 包。

这:

var kernel = new StandardKernel(new NinjectConfig())

是否需要让一切正常工作 - 无需显式加载new NLogModule().

于 2013-09-16T17:18:29.257 回答