0

在本地运行我的天蓝色计时器触发器时,我遇到了从其他类的方法记录信息的问题。

我有以下定时器触发功能:

public class ExpServiceFuncApp
{

    [FunctionName("ExpServiceFuncApp")]
    public static void Run([TimerTrigger("0 */1 * * * *")] TimerInfo myTimer, ILogger log)
    {
        try
        {
            IServiceCollection services = new ServiceCollection();

            services.AddLogging(builder =>
            {
                builder.AddApplicationInsights(Environment.GetEnvironmentVariable("APPINSIGHTS_INSTRUMENTATIONKEY", EnvironmentVariableTarget.Process));
                builder.SetMinimumLevel(LogLevel.Debug);
            })

            .AddSingleton<IDataRec, DataRec.DataRec>()
            .AddSingleton<IDataProc, DataProc.DataProc>()
            .AddSingleton<IDClient, KustoDClient>()
            .AddSingleton<IAzureBlobClient, AzureBlobClient>()
            .AddSingleton<IAzureKustoClient, AzureKustoClient>()
            .AddSingleton<IQueriesSettings, QueriesSettings>()
            .AddSingleton<IServiceSettings, ServiceSettings>()
            .AddTransient<IRawData, RawData>();

            IServiceProvider serviceProvider = services.BuildServiceProvider();


            log?.LogInformation("Initiate.");
            var dataProc = serviceProvider.GetRequiredService<IDataProc>();

            log?.LogInformation("Start Data Process.");
            dataProc.Start();

        }
        catch (Exception ex)
        {

        }

    }
}

在我创建的这个 Azure 函数中,我还有其他正在使用的类,其中包含应该显示的日志。这些类的一个示例如下:

public class KustoDataClientBase
{
    protected static async Task<IRawData> GetDataAsync(IAzureKustoClient azureKustoClient, string database, CancellationToken cancellationToken, ILogger logger)
    {
        var stopwatch = new Stopwatch();
        logger?.LogInformation($"Get data from database '{database}'");

        stopwatch.Start();

        {
            //Some code;
        }

        stopwatch.Stop();

        logger?.LogInformation($"Executing queries took {stopwatch.Elapsed:g});
    }
}

这里的问题是当我在本地运行这个函数应用程序时,我得到以下结果:

在此处输入图像描述

如您所见,我只看到 ExpServiceFunApp 类中的日志,而没有看到其余类中的日志。我有 7 个其他日志也应该出现。

有人可以解释一下这里发生了什么。并不是说我在本地运行,而且这还没有在 Azure 上发布。我应该从计时器触发器的代码中删除一些东西吗?我应该怎么做才能看到允许其他类的所有日志也出现?

4

1 回答 1

0

host.json文件中,您可以添加以下代码:

{
  "version": "2.0",
  "logging": {
    "logLevel": {
      "Function": "Trace"
    }
  }
} 

或者

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingExcludedTypes": "Request",
      "samplingSettings": {
        "isEnabled": true
      }
    },
    "logLevel": {
      "Function": "Information"
    }
  }
}

https://i.imgur.com/6H3woZ5.png

有关这方面的更多信息,请参阅Configure categories and log levels文档部分。

于 2021-12-16T11:19:22.173 回答