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

时间:2017-05-25 14:07:11

标签: c# asp.net-core asp.net-core-mvc .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.

我想禁用此消息,因为不需要它,并且它使组织良好的控制台日志变得混乱。我在下面有一个截图,所以你确切地知道我在说什么:

Screenshot of message

我已经停用了mvc的所有其他日志记录(已从ILoggerFactory删除了ConfigureServices并将所有日志记录设置为{#1}}中的"无")。

如何禁用/禁止此消息?

4 个答案:

答案 0 :(得分:4)

在ASP.NET Core 2.1中,在WebHostBuilder上使用SuppressStatusMessages方法。

WebHost.CreateDefaultBuilder()
    .UseStartup<Startup>()
    .SuppressStatusMessages(true);

答案 1 :(得分:3)

你也可以这样做:

var host = BuildWebHost(args);
host.Start();
host.WaitForShutdown();

这将绕过Console.WriteLine() s。

答案 2 :(得分:2)

删除记录器工厂不会有帮助,因为它是Console.WriteLine()(参考:Github issue comment)。您需要禁止Console.WriteLine输出。在Main方法中,编写这样的代码。这将忽略Console.WriteLine输出。

public static void Main(string[] args)
{
    Console.SetOut(new StreamWriter(Stream.Null));
    BuildWebHost(args).Run();
}

答案 3 :(得分:2)

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

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

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

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

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