sty*_*ybl 14 c# asp.net-core-mvc .net-core asp.net-core
作为我的应用程序的一部分,我有一个.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.
Run Code Online (Sandbox Code Playgroud)
我想禁用此消息,因为不需要它,并且它使组织良好的控制台日志变得混乱.我有一个截图,所以你知道我在说什么:
我已经禁用了所有其他的日志记录的MVC(除去ILoggerFactory来自ConfigureServices并将所有日志记录在"无" appsettings.json).
如何禁用/禁止此消息?
你也可以这样做:
var host = BuildWebHost(args);
host.Start();
host.WaitForShutdown();
Run Code Online (Sandbox Code Playgroud)
这将绕过Console.WriteLine()s。
在ASP.NET 2.1的核心,使用SuppressStatusMessages的方法WebHostBuilder。
WebHost.CreateDefaultBuilder()
.UseStartup<Startup>()
.SuppressStatusMessages(true);
Run Code Online (Sandbox Code Playgroud)
好消息!
ASP.NET CoreConsole不再使用plain 编写这些烦人的消息。现在使用抽象Logger,因此启动消息将由您的记录器以配置的格式写入,就像任何其他日志一样。
但是如果你想一直摆脱这些日志,你可以使用以下两种方法之一
第一种方法是使用.ConfigureLogging(...)主机构建器上的方法从记录器中删除所有默认提供程序:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(loggingBuilder =>
{
loggingBuilder.ClearProviders(); // <-- here
})
.ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
Run Code Online (Sandbox Code Playgroud)
另一种方法是ConsoleLifetimeOptions在您的.NET Core 3 记录器中配置Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.Configure<ConsoleLifetimeOptions>(opts => opts.SuppressStatusMessages = true);
// ...
}
Run Code Online (Sandbox Code Playgroud)
注意:第二种方法不会禁用有关在端口上侦听的应用程序的 Kestrel 日志(但首先会)
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://localhost:5000
Run Code Online (Sandbox Code Playgroud)
可以通过两种方式禁用这些消息(除了已经提到的控制台设置):
1)您可以使用环境变量禁用它们:
"ASPNETCORE_SUPPRESSSTATUSMESSAGES": "true"
2)或通过代码(在Program.cs):
WebHost.CreateDefaultBuilder(args)
.UseSetting(WebHostDefaults.SuppressStatusMessagesKey, "True")
Run Code Online (Sandbox Code Playgroud)
或者
WebHost.CreateDefaultBuilder(args)
.SuppressStatusMessages(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |