首页 > 解决方案 > asp.net framework 4.7配置日志级别,不工作

问题描述

我的 Web 作业不遵守我的 host.json 中的日志记录级别配置。它是使用 .NET 框架 4.7 编写的。以下代码的预期结果是没有记录,相反,我根据下面的屏幕截图记录了一个。任何人都可以提供有关如何解决此问题的指导吗?我需要添加额外的配置/启动代码吗?

在此处输入图像描述

主机.json

{
  "version": "2.0",
  "logging": {
    "fileLoggingMode": "always",
    "logLevel": {
      "Functions.Test": "None",
      "default": "None"
    }
  }
}

C# Web 作业代码

public static void Main()

        {

            var config = new Microsoft.Extensions.Configuration.ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("host.json", optional: true, reloadOnChange: true)
                .AddEnvironmentVariables()
                .Build();

            var builder = new HostBuilder();

            builder.ConfigureWebJobs(b =>
            {
                b.AddAzureStorageCoreServices();
                b.AddTimers();
                b.AddBuiltInBindings();
            });

            builder.ConfigureLogging((context, b) =>
            {
                b.AddConsole();
            });

            var host = builder.Build();
            using (host)
            {
                var jobHost = host.Services.GetService(typeof(IJobHost)) as JobHost;
                jobHost.CallAsync("Test").GetAwaiter().GetResult();
            }
        }
    }

    public class Functions
    {
        [NoAutomaticTrigger]
        public static void Test(ILogger logger)
        {
            logger.LogCritical("LogCritical");
            logger.LogDebug("LogDebug");
            logger.LogError("LogError");
            logger.LogInformation("LogInformation");
            logger.LogTrace("LogTrace");
            logger.LogWarning("LogWarning");
            Thread.Sleep(1000 * 10);
        }
    }
}

标签: c#asp.netazure-webjobs

解决方案


感谢您分享您的代码。

在我看来,在第一条语句中正在构建一个配置对象var config = new Microsoft.Extensions.Configuration.ConfigurationBuilder()...,但是,稍后在代码中,config在主机创建和配置时不使用这个变量。因此,不会应用这些设置并使用默认InformationlogLevel。

我们需要将此配置提供给HostBuilder,看起来可以使用HostBuilder'ConfigureAppConfiguration方法完成。请看一下这个问题,它有一个如何使用这种方法的例子。


推荐阅读