.net Azure应用服务webjob,如何禁用跟踪日志到应用程序洞察

oalqel3c  于 2023-05-30  发布在  .NET
关注(0)|答案(1)|浏览(267)

我有一个.net framework webjob,它读取APPINSIGHTS_INSTRUMENTATIONKEY env设置,并通过ILogger将所有调试语句作为跟踪日志发送给应用程序洞察。
这是越来越昂贵,这些日志是不需要的。
是否有办法禁用发送到应用洞察的跟踪日志?
我试过使用appsettings.json、applicationinsights.config,但似乎没有任何效果。
编辑:也尝试添加env设置,如Logging__LogLevel__Default = None,如下所示:https://learn.microsoft.com/en-us/dotnet/core/extensions/logging?tabs=command-line#set-log-level-by-command-line-environment-variables-and-other-configuration但没有区别

ac1kyiln

ac1kyiln1#

这些日志来自ILogger日志。您可以使用过滤器不收集ILogger日志,这样这些日志就不会发送到ApplicationInsights。

下面的代码可用于完全禁用所有类别的ILogger日志。

builder.AddFilter<ApplicationInsightsLoggerProvider>("", LogLevel.None);

代码段:

static async Task Main()
        {
            var builder = new HostBuilder();
            builder.UseEnvironment(EnvironmentName.Development);
            builder.ConfigureLogging((context, b) =>
            {
                b.AddConsole();
                string instrumentationKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
                if (!string.IsNullOrEmpty(instrumentationKey))
                {
                    b.AddApplicationInsightsWebJobs(o => o.InstrumentationKey = instrumentationKey);
                }

            });
builder.Logging.AddFilter<ApplicationInsightsLoggerProvider>("", LogLevel.None); 
           
            builder.ConfigureWebJobs(b =>
            {
                b.AddAzureStorageCoreServices();
                b.AddAzureStorageQueues();
            });
            var host = builder.Build();
            using (host)
            {
                await host.RunAsync();
            }

        }

Applications.json:

您也可以在应用程序设置中进行配置,如下所示:

"Logging": {
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "None",
        "Microsoft.Hosting.Lifetime": "None"
      }

相关问题