gpt4 book ai didi

c# - Asp.Net Core API 禁用启动完成消息

转载 作者:可可西里 更新时间:2023-11-01 07:56:51 26 4
gpt4 key购买 nike

作为我的应用程序的一部分,我有一个 .Net Core API 项目。与该项目作为其自己的进程运行的大多数情况不同,我让 API 在线程中运行,除其他外,在单个进程中运行。同样对于我的项目,我已经实现了一个自定义日志系统来满足我的需要。但是,我遇到了一个小问题。每次我运行我的程序时,一旦 API 启动,这条消息就会打印到控制台:

Hosting environment: Production
Content root path: C:\Users\Path\To\Code
Now listening on: http://*:8000
Application started. Press Ctrl+C to shut down.

我想禁用此消息,因为不需要它,它会使原本组织良好的控制台日志变得困惑。我在下面有一个屏幕截图,因此您确切地知道我在说什么:

Screenshot of message

我已经禁用了 mvc 的所有其他日志记录(从 ConfigureServices 中删除了 ILoggerFactory 并在 appsettings.json 中将所有日志记录设置为“无” >).

我该如何禁用/抑制此消息?

最佳答案

.NET 核心 3.x

好消息!这些烦人的消息不再由 ASP.NET Core 使用普通 Console 编写。现在使用抽象 Logger,因此启动消息将由您的记录器以配置的格式写入,就像任何其他日志一样。

但是如果你想一直摆脱这些日志,你可以使用以下两种方法之一

第一种方法是在主机构建器上使用 .ConfigureLogging(...) 方法从记录器中删除所有默认提供程序:

public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(loggingBuilder =>
{
loggingBuilder.ClearProviders(); // <-- here
})
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });

另一种方法是在 Startup.cs 中使用 ConsoleLifetimeOptions 配置 .NET Core 3 记录器:

public void ConfigureServices(IServiceCollection services)
{
// ...

services.Configure<ConsoleLifetimeOptions>(opts => opts.SuppressStatusMessages = true);

// ...
}

注意:第二种方法不会禁用有关正在端口上监听的应用程序的 Kestrel 日志(但第一种方法会)

info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://localhost:5000

.NET 核心 2.x

可以通过两种方式禁用这些消息(除了已经提到的控制台设置):

1) 您可以使用环境变量禁用它们:"ASPNETCORE_SUPPRESSSTATUSMESSAGES": "true"

2) 或者通过代码(在Program.cs):

WebHost.CreateDefaultBuilder(args)
.UseSetting(WebHostDefaults.SuppressStatusMessagesKey, "True")

WebHost.CreateDefaultBuilder(args)
.SuppressStatusMessages(true);

关于c# - Asp.Net Core API 禁用启动完成消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44182609/

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