问题标签 [ninject-logging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
578 浏览

c# - ILogger 不需要配置?

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

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

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

我错过了什么?

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

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


文档说:

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

但如果我这样做:

...ReSharper 不知道是什么NLogModule

0 投票
1 回答
612 浏览

c# - ILoggerFactory.GetCurrentClassLogger 仅在发布版本中失败并出现 InvalidOperationException

上周将我的 Windows 服务应用程序部署到生产环境失败了,所以我尝试在本地以发布模式运行项目InvalidOperationException: Can not determine current class.,结果可以追溯到对GetCurrentClassLogger.

我的项目使用Ninject解析ILoggerFactory到中间层的每个服务。然后服务用于在构造函数GetCurrentClassLogger()中获取正确ILogger的。例如:

如果我深入研究GetCurrentClassLoggeratLoggerFactoryBaseNinject.Extensions.Logging的实现:

我可以看到抛出异常的位置。

我的第一直觉是检查是否有任何系统、框架或项目更新导致它,但自上次成功部署以来没有做任何有意义的事情。

现在......关于这个问题的“有趣”的事情是,当我Trace.WriteLine("Test");在构造函数中添加一行时,GetCurrentClassLogger执行得很好。

我能够将此问题与编译器的代码优化联系起来。如果我在项目属性的Build选项卡中禁用它,它也可以正常执行。

问题:什么可能导致StackFrame停止提供DeclaringType

同时,我将其用作解决方法,但我更喜欢使用原始方法:

任何帮助将非常感激。