gpt4 book ai didi

c# - 在不使用 WebHost 的情况下使用 ASP.NET Core 日志记录

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:58 24 4
gpt4 key购买 nike

我们有 .NET Core 应用程序可以从 ASP.NET Core 日志记录(和服务提供商)中受益,但它们没有使用任何 WebHostWebHostBuilder .

我想深入了解扩展/方法,例如 ConfigureLoggingUseStartup获得一些关于如何设置我的根配置/服务提供商的灵感。

我原以为 ASP.NET Core 是开源的,但不知何故我缺乏找到这些资源的天赋。我在哪里可以了解更多关于如何设置所有这些的信息,以及我如何在任何控制台应用程序中使用它们,而不仅仅是使用 WebHostBuilder 的应用程序。 ?

最佳答案

来自 ASP.NET Core 的各种组件都可以单独使用。所以你绝对可以使用像 Microsoft.Extensions.Logging 这样的东西,甚至其他类似 DependencyInjection 的东西, ConfigurationOptions无需实际使用 ASP.NET Core 或其 WebHost。

我现在可以将您指向源代码中的不同位置(例如 the WebHostBuilderthe WebHostthe default builder ),但在您自己的应用程序中登录和运行实际上非常简单,因此您不必需要浏览所有这些内容。

相反,只需添加对 Microsoft.Extensions.Logging 的引用和您最喜欢的日志记录提供商,例如Microsoft.Extensions.Logging.Console ,然后设置记录器工厂并创建记录器:

var loggerFactory = new LoggerFactory();
loggerFactory.AddConsole();

var logger = loggerFactory.CreateLogger("categoryName");
logger.LogInformation("Whee!");

这就是让日志正常工作所需的全部内容。当然,您现在需要创建自己的记录器并将其传递到您需要的地方,但您可以完全控制它。

如果愿意,您还可以通过添加对 Microsoft.Extensions.DependencyInjection 的引用来添加依赖注入(inject)。并创建一个服务集合:

var services = new ServiceCollection();

// add logging
services.AddLogging(loggerBuilder =>
{
loggerBuilder.AddConsole();
});

// add your services
services.AddTransient<MyService>();


// create the service provider
var serviceProvider = services.BuildServiceProvider();

// request your service and do something
var service = serviceProvider.GetService<MyService>();
service.DoSomething();
public class MyService
{
private readonly ILogger<MyService> _logger;
public MyService(ILogger<MyService> logger)
{
_logger = logger;
}

public void DoSomething()
{
_logger.LogInformation("Did something!");
}
}

突然之间,您只需几行即可进行依赖注入(inject)。因此,您可以为控制台应用程序设置自己的环境,然后基于这些技术为您的应用程序构建 — 无需依赖实际的 ASP.NET Core 内容。

关于c# - 在不使用 WebHost 的情况下使用 ASP.NET Core 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50121269/

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