【问题标题】:How to set Sentry log level in runtime in .NET Core?如何在 .NET Core 运行时设置 Sentry 日志级别?
【发布时间】:2020-09-23 22:24:11
【问题描述】:

我正在将 Sentry 与当前配置为的 .NET Core 一起使用

"SentryOptions": {
  "Dsn": "https://...",
  "LogLevel": "Error",
  "UseRequestFactory": false,
  "IsDisabled": false
},

ConfigureServices中加载

serviceCollection.AddTransient<ISentryProvider, SentryProvider>();
serviceCollection.AddOptions().Configure<SentryOptions>(section);

有没有办法在运行时更改LogLevel?我不想为了切换配置而更改 appsettings.json 并重新部署。

【问题讨论】:

  • 我认为这取决于内部哨兵代码,但是AddJsonFile 方法有一个选项可配置选项reloadOnChange。您可以尝试使用它。
  • 你指的是 Sentry.Extensions.Logging 还是其他包?你的意思是什么LogLevel? Sentry.AspNetCore 包已经加载了 Sentry 配置部分,因此您不需要自己加载它
  • @BrunoGarcia 我们正在使用SharpRaven。 LogLevel 我的意思是它配置为Error,但我希望能够在运行时更改为其他内容。
  • 我在问您是否在谈论 Sentry 将捕获事物作为事件或添加为面包屑的级别?还是其他级别? Sentry 与日志库集成,但它本身并不是一个日志工具。你看过样品吗? github.com/getsentry/sentry-dotnet/tree/master/samples

标签: c# .net-core sentry


【解决方案1】:

这是一个 ASP.NET Core 应用程序还是只是使用通用主机的 .NET Core?您是否使用Sentry.AspNetCore 集成?该集成确实会自动从appsettings.json 加载Sentry 键,因此您无需为任何Sentry 配置触摸DI 容器。它has docs here

Sentry.AspNetCore 依赖于Sentry.Extension.Logging (docs here),因此它支持捕获所有LogErrors 和更高的错误和LogInformation 和更低的面包屑(默认设置)。这意味着您可以使用 DI 将 IHubISentryClient 带到您应用中的任何位置。

您的答案很可能:如果您在appsettings.json 中更改它们的值,则不会重新加载特定设置MinimumBreadcrumbLevelMinimumEventLevel。例如,您可以完全禁用 Sentry:

{
  "Logging": {
    "LogLevel": {
      "Sentry": "None", // Disables Sentry
    }
}

更多详情请关注ASP.NET docs

由于这是在 Microsoft.Extensions.Logging 包之上构建的集成,您可以配置通用应用的日志级别,它应该会影响 Sentry 的记录器。他们没有更高级别的自动重新加载配置。重新加载配置是每个日志记录提供程序的工作。

如果您想尝试解决此问题(未记录/不支持):您可以从容器中解析 IOptions&lt;SentryOptions&gt;(不要自己注册,SDK 已经这样做了)并在运行时更改 LogLevels . logger 实例持有对选项的引用并在运行时检查级别:

https://github.com/getsentry/sentry-dotnet/blob/f5f57545a1f17820d8beda3238ad76fc7ceac7ef/src/Sentry.Extensions.Logging/SentryLogger.cs#L40-L41

最后,请注意,如果您使用 Serilog,它会更改日志记录后端,在这种情况下情况会有所不同。 Sentry 也提供Sentry.Serilog package

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-02
    • 2011-02-06
    • 2021-09-02
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多