我正在将.net core与NLog一起使用,并尝试根据环境实现不同的设置 使用静态初始化,我可以通过使用
private static NLog.Logger log =
NLog.Web.NLogBuilder.ConfigureNLog(Startup.NLogConfig).GetCurrentClassLogger();
其中Startup.NLogConfig
在启动类上初始化的方式是
if (env.IsDevelopment())
NLogConfig = "nlog.file.config";
else
NLogConfig = "nlog.blob.config";
但是我不知道如何为依赖注入指定它:
public SomeController(ILogger<SomeController> log)
{
// log needs to be initialized using the right config based on the environment context
}
答案 0 :(得分:0)
从未使用过依赖注入,但是在阅读手册时,您先使用接口,然后注册该接口的具体实现。
这是具体的实现:
NLog.Web.NLogBuilder.ConfigureNLog(Startup.NLogConfig).GetCurrentClassLogger();
由于您正在谈论NetCore和依赖项注入(未指定任何特定的依赖项注入容器),所以我猜您应该使用Microsoft依赖项注入和Microsoft Extension Logging(MEL)。
有关如何将NLog设置为LoggingProvider-implementation,然后使用MEL-ILogger-interface,请参见以下示例:
https://github.com/NLog/NLog/wiki/Getting-started-with-ASP.NET-Core-2#4-update-programcs
请注意在启动时如何配置实现(以及设置依赖项注入容器),然后所有业务逻辑类都获取ILogger接口以执行其日志记录(登录到依赖项注入中注册的任何实现) -容器)。