【发布时间】:2019-06-19 18:18:14
【问题描述】:
我正在使用以下方法创建控制台记录器:
_log = new LoggerFactory().AddConsole().CreateLogger(this.GetType().Name);
现在我收到以下警告:
controllers\DummyController.cs(31,20): warning CS0618:
'ConsoleLoggerExtensions.AddConsole(ILoggerFactory)' is obsolete:
'This method is obsolete and will be removed in a future version. The
recommended alternative is AddConsole(this ILoggingBuilder builder).'
我不在依赖注入容器的上下文中。
更新: 我也尝试过像这样使用 DI:
var serviceProvider = new ServiceCollection()
.AddLogging()
.BuildServiceProvider();
var log = serviceProvider.GetService<ILogger>();
log.LogInformation("testing _log");
但我收到以下错误:
Error Message:
System.ArgumentNullException : Value cannot be null.
Parameter name: logger
Stack Trace:
at Microsoft.Extensions.Logging.LoggerExtensions.Log(ILogger logger, LogLevel logLevel, EventId eventId, Exception exception, String message, Object[] args)
at Microsoft.Extensions.Logging.LoggerExtensions.LogInformation(ILogger logger, String message, Object[] args)
似乎我无法从容器中获取记录器
【问题讨论】:
-
您可以通过反射或其他方式来实现。这可能有点矫枉过正,但在某些性能不是主要问题的情况下,我所做的只是创建我的
ServiceCollection和ServiceProvider并使用提供的扩展方法。 -
谢谢,我也尝试过使用 DI,但似乎缺少一些东西。我更新了我的问题
标签: logging dependency-injection .net-core