我刚开始学习ninject,但遇到了一个与记录器的问题。我现在有一个控制器,它将一个服务和日志注入构造函数,如下所示:

public ToolsController(IToolsService toolsService, ILogger logger)
{
    logger.Info("ToolsController Created");
    this.toolsService = toolsService;
    this.logger = logger;
}

问题出在构造函数中的logger.info行(例如),该行似乎使用了错误的logger,因此它输出的logger名称不正确。
Tools.IGeocodeImporter: ToolsController Created

下面是如何设置以获取记录器名称:
kernel.Bind<ILogger>().To<Logger>().WithConstructorArgument("name", x => x.Request.ParentContext.Request.Service.FullName);

任何建议都将不胜感激。

最佳答案

我使用以下内容:

.Bind<ILog>().ToMethod(p => LogManager.GetLogger(
                   p.Request.Target.Member.DeclaringType));

让日志记录程序显示类的名称。我使用Log4NET,但我认为这个想法也可以应用到任何日志:事实上,绑定到一个方法打开您的任何解决方案,以创建所需的实例。

关于c# - 使用NLog的Ninject记录器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13748455/

10-13 06:22