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

2024-04-15

作为我的应用程序的一部分,我有一个 .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.

我想禁用此消息,因为不需要它,并且它会使原本组织良好的控制台日志变得混乱。我在下面有一个屏幕截图,这样你就知道我在说什么:

我已经禁用了 mvc 的所有其他日志记录(已删除ILoggerFactory from ConfigureServices并将所有日志记录设置为“无”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>(); });

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

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") 

or

WebHost.CreateDefaultBuilder(args)
    .SuppressStatusMessages(true);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.Net Core API 禁用启动完成消息 的相关文章

随机推荐

  • RSpec 惰性主题

    测试类方法时 我不需要自动创建实例 隐式主题是自动创建的 还是仅在引用时创建 describe MyClass do it uses implicit subject do subject my method should be true
  • 为什么 python strptime 不支持%z?

    gt gt gt datetime strptime 2014 02 13 11 55 00 0800 Y m d H M S z Traceback most recent call last File
  • 使用令牌 URI 获取证书 URI

    我正在尝试在 Ubuntu 上使用 USB 令牌来访问 VPN 此访问必须使用 openconnect 来完成 并在连接字符串中使用证书的 URI 但问题是 我不知道如何获取我的证书的 URI 我已经能够让 Ubuntu 识别该令牌 并且通
  • for 循环中的多个不同的事件侦听器

    下面的代码始终返回未定义 为什么是这样 我希望事件侦听器以索引字符串进行响应 Thanks var array Hey Hi Hello for var i 0 i lt array length i var box document cr
  • 如果我的应用程序处于活动状态,如何屏蔽主页键? (屏保、锁屏)

    如果我想写一个屏幕保护程序或锁屏 有没有办法防止home键返回到启动器 简单 当您进入活动时 调用 getWindow setType WindowManager LayoutParams TYPE KEYGUARD 当您退出活动时 请致电
  • 如果 2 个或更多人同时更新记录会发生什么?

    我使用 NHibernate 的版本属性 每次更新聚合根时该属性都会自动递增 如果 2 个或更多人同时更新同一条记录会发生什么 另外 我将如何测试这个 请注意 这不是我遇到过的情况 只是想知道 什么是原子的 什么不是 正如其他人所说 SQL
  • 为什么 :sprint 总是打印“_”?

    Prelude gt let a 3 Prelude gt sprint a a Prelude gt let c ab Prelude gt sprint c c 为什么总是打印一个 我不太明白的语义 sprint命令 Haskell 是
  • Gsub 获取 R 正则表达式中部分匹配的字符串?

    gsub a zA Z 0 9 5 1 htf84756 iuy 1 84756 iuy 我想获得84756 我该怎么办 Using gregexpr with regmatches 优点是只要求您的模式与您实际想要提取的位相匹配 stri
  • 原始类型的泛型(Int、Float、Double)会产生奇怪的错误消息

    这里有人可以看一下代码并告诉我它有什么问题吗 我本质上尝试构建几个对某些原始类型进行操作的通用函数 例如Int Float Double etc 不幸的是我无法让它正常工作 这是有效的代码 部分 http stackoverflow com
  • 以编程方式模拟平滑的拖动事件

    我用的是定制的拖动线性布局 https github com justasm DragLinearLayout 我添加的所有孩子都使用addDragView 可拖动 用户交互 我想模拟单击视图的拖动事件 平滑移动到布局底部 ACTION D
  • 有没有办法获取线程使用哪个核心?

    有没有办法获取线程使用哪个核心 例如 printf Core 2d n coreN 如果您使用的是基于 Linux 的系统 您可以使用 sched getcpu 打印线程正在运行的当前 CPU 核心数 cout lt lt Thread r
  • 是否可以在活动内启动活动?如何?

    活动A是主要的可见活动 我想开始活动B inside 活动A 并建立活动B in 框架布局 或类似的东西 的活动A 是否可以 如何 是的 您可以使用ActivityGroup并将其嵌入其中 http developer android co
  • Java 1.3 String.replaceAll() ,替换

    我正在和一些非常老的人一起工作Java 1 3准确地说 我正在尝试清理一些String通过删除非字母字符 标点符号和数字等 进行输入 通常我会做类似的事情 String replaceAll A Za z 然而 replaceAll 被介绍
  • c#:以 100% 质量保存 JPEG 时图像质量降低

    我只是加载 JPEG 图像并保存它 而不对其进行任何操作 但图像质量明显下降 这是代码 Bitmap imgOutput new Bitmap D image jpg Graphics outputGraphics Graphics Fro
  • SMS 是注册 Google App Engine 的唯一方式吗?

    我没有手机 但 Google App Engine 需要短信来验证帐户 还有其他方法可以完成注册吗 我很惊讶他们不使用 Gmail 帐户来执行此操作 编辑 谷歌为我创建了一个 问题解决了 否 如果您没有办法接收短信 您可以填写短信问题表格
  • 有没有办法在 Angular 2 中以可折叠格式显示有效的 json?

    有没有办法在 Angular 2 中以可折叠格式显示有效的 json pre data json pre 将很好地显示 json 但我需要能够折叠 展开其中的各个对象 尝试 ngx json viewer 它非常适合显示具有可展开 可折叠节
  • 向下滑动显示textview动画

    我有兴趣在我的 Android 应用程序中添加一个切换 TextView 可见性的动画 我希望它不只是将可见性设置为 Visibility GONE 和 Visibility VISIBLE 相反 我希望它具有类似 jquery 的幻灯片效
  • SessionId/身份验证令牌生成的最佳实践

    我见过有人使用 UUID 来生成身份验证令牌 然而 在RFC 4122 http www ietf org rfc rfc4122 txt据称 不要假设 UUID 很难猜测 不应该使用它们 作为安全功能 仅拥有即可授予的标识符 访问 例如
  • C - 我使用什么选项来生成列表文件?

    我是 C 编程语言和 gcc 的新手 我正在尝试破译一个相当复杂的 C 程序 我想阅读一个有用的列表文件而不是源文件 我正在寻找由 gcc 编译器创建的列表文件 其中包含 所有包含的源代码 xref 交叉引用列表 变量声明位置的引用 例如
  • Asp.Net Core API 禁用启动完成消息

    作为我的应用程序的一部分 我有一个 Net Core API 项目 与该项目作为自己的进程运行的大多数情况不同 我让 API 在线程等单个进程中运行 另外 对于我的项目 我实现了一个自定义日志系统来满足我的需求 但是 我遇到了一个小问题 每