C# 如何在.NET内核的运行时设置Sentry日志级别?

C# 如何在.NET内核的运行时设置Sentry日志级别?,c#,.net-core,sentry,C#,.net Core,Sentry,我使用的是带有.NET内核的Sentry,当前配置为 "SentryOptions": { "Dsn": "https://...", "LogLevel": "Error", "UseRequestFactory": false, "IsDisabled": false }, 在ConfigureServices serviceCollection.AddTransient<ISentryProvider, SentryProvider>(); serviceCo

我使用的是带有.NET内核的Sentry,当前配置为

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

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

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

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

Sentry.AspNetCore
依赖于
Sentry.Extension.Logging
(),因此它支持捕获所有
LogError
s和更高的错误和
LogInformation
以及更低的面包屑(默认设置)。这意味着您可以使用DI在应用程序中的任何位置获取
IHub
iEntryClient

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

{
  "Logging": {
    "LogLevel": {
      "Sentry": "None", // Disables Sentry
    }
}
更多的细节

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

如果您想尝试(未记录/不支持),可以解决这个问题:您可以从容器中解析
IOptions
(不要自己注册,SDK已经注册了),并在运行时更改日志级别。logger实例保存对选项的引用,并在运行时检查级别:


最后,请注意,如果您使用Serilog,它会更改日志后端。在这种情况下,情况有所不同。Sentry也提供了一个方法。

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