gpt4 book ai didi

c# - 使用 NLog 的 Ninject 记录器

转载 作者:可可西里 更新时间:2023-11-01 08:04:27 27 4
gpt4 key购买 nike

我刚开始学习 Ninject,但遇到了记录器的问题。我目前有一个 Controller ,它有一个服务和记录器注入(inject)到构造函数中,如下所示:

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

问题出在构造函数中的 logger.Info 行(例如),它似乎使用了错误的记录器,因此它打印出的记录器名称不正确。

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,但我认为这个想法也可以应用于任何日志:事实上,绑定(bind)到一个方法可以让你找到任何解决方案,以便创建所需的实例。

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com