问题标签 [microsoft.extensions.logging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
146 浏览

dependency-injection - MissingMethodException:没有为类型定义无参数构造函数

我有一个使用 .net core 5 的 Blazor 应用程序。我正在尝试运行一个页面来触发电子邮件发送 (EmailSample),它可以正常工作,直到我尝试添加构造函数注入来记录错误。一旦我添加构造函数注入并重新运行页面,我就会得到一个No parameterless constructor defined for type错误。我没有正确使用它吗?如何修复,这样我就不会收到该错误。如果我能弄清楚如何将记录器作为服务添加到其中Startup.cs/ConfigureServices/services.AddSingleton< ??? > ,然后只在 EmailSample 类中执行 [Inject] 但不知道如何解决,我就可以解决这个问题。

导致错误的代码是......(注意:设置为部分类,而不是在 .razor 页面中@code{}

0 投票
0 回答
56 浏览

c# - 防止日志类别被记录在 Microsoft.Extensions.Logging SimpleConsole 日志中

我已使用 Microsoft.Extensions.Logging SimpleConsole 将日志记录添加到两个项目(.net-5 和 .net-6),如下所示:

但是当我使用以下方式记录自己的消息时:

“信息:”后面的部分包含我要记录的消息前面的日志类别。

我记录的消息可能很长,我仍然希望在适合屏幕的一行中看到它们。因此,我怎样才能摆脱日志类别,让它只记录我的消息?

0 投票
0 回答
88 浏览

serilog - 在有或没有 Microsoft.Extensions.Logging 的情况下使用 Serilog 是否更好?

我正在使用 .NET 6 构建一个 API,并计划使用 Serilog 作为记录器。根据https://onloupe.com/blog/serilog-vs-mel/有两种可能性:

  • 独占使用 Serilog
  • 使用 Microsoft.Extensions.Logging 作为日志 API + Serilog 作为日志框架

一方面,仅使用 Serilog 的缺点是我的代码库中的所有内容都会依赖于 Serilog,因此将它与 Microsoft.Extensions.Logging 结合使用应该会提供更大的灵活性。

另一方面,在https://github.com/serilog/serilog-extensions-logging上,他们明确建议将https://github.com/serilog/serilog-aspnetcore用于 .NET Core 项目:

ASP.NET Core 应用程序应该更喜欢 Serilog.AspNetCore 和 UseSerilog()。

有人知道这个建议的原因吗?就灵活性而言,这在我看来是矛盾的?

0 投票
0 回答
12 浏览

serilog - 使用 Microsoft.Extensions.Logging 进行日志记录时如何返回日志的 ID

在我的 .NET 6 Web 应用程序中,我使用以下基础结构来记录各种事件和异常:

  • Microsoft.Extensions.Logging 作为日志记录 API
  • Serilog 作为日志框架
  • MS SQL 数据库作为日志接收器(即将写入日志的目标)。

在 Web 应用程序的 API 层中,有一个中间件可以捕获所有异常,记录它们并将异常消息作为 JSON 字符串返回给客户端。

除了异常消息,我还想将创建的日志条目的 ID 返回给客户端。不幸的是,Microsoft.Extensions.LoggingLoggerExtension类的方法(例如LogError())不返回任何值。有没有办法获取创建的数据库记录的ID?