gpt4 book ai didi

logging - 网核 : manually create a Logger without using LoggerFactory

转载 作者:行者123 更新时间:2023-12-04 01:15:04 25 4
gpt4 key购买 nike

我正在使用以下命令创建控制台记录器:

_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).'

我不在依赖注入(inject)容器的上下文中。

更新:
我也尝试过像这样使用 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)

看来我无法从容器中获取记录器

最佳答案

接口(interface)已更改,因此您可以在 LoggerFactory 上使用静态 Create() 工厂方法,并在配置提供程序的配置对象中传递一个委托(delegate)。然后可以像以前一样使用工厂创建记录器:

    ILogger<Program> logger = LoggerFactory
.Create(logging => logging.AddConsole())
.CreateLogger<Program>();
logger.LogInformation("Hello World!");
虽然应用程序通常应该使用主机构建器,但这在单元测试中非常有用,因为您可以传入一个写入控制台(而不是模拟)的真实记录器,并在测试结果中查看输出。
这取自简单的演练示例: https://github.com/sgryphon/essential-logging/tree/master/examples/GettingStarted
还有更多示例展示了如何通过主机构建器进行配置,以及如何使用 Microsoft 高性能日志记录模式。

关于logging - 网核 : manually create a Logger without using LoggerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54373311/

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