当前位置: 首页 > 知识库问答 >
问题:

当使用Azure Function V2持久函数时,ILogger不会记录到应用程序洞察

司空叶五
2023-03-14

有人能解释一下在使用Azure Function V2(.NET核心)时,如何强制ILogger实际将一些东西登录到应用程序insights中吗?

我们配置了应用程序洞察力,它显示了实时远程和未处理的异常。我们正在尝试的工作是强制应用程序insights存储我们通过默认的iLogger创建的日志。

无论我们使用哪种类型的日志级别(信息、警告、错误、关键)--应用程序洞察中没有存储任何东西。

{
  "version": "2.0",
  "functionTimeout": "00:10:00",
  "extensions": {
    "durableTask": {
      "maxConcurrentActivityFunctions": 4,
      "maxConcurrentOrchestratorFunctions": 1
    }
  },
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      "default": "Information"
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond": 5
      }
    }
  }
}
[FunctionName("MainTriggerEntry")]
public static async Task RunMainTriggerEntry([TimerTrigger("%CRON_EXPRESSION%", RunOnStartup = false)]TimerInfo timer,
[OrchestrationClient]DurableOrchestrationClient starter, ILogger log)
{
    log.LogInformation("[Information] Message!");
    log.LogError("[Error]. Something occured");
    log.LogCritical("[Critical] Critical issue");
    for (var i = 0; i < 500; i++)
    {
        log.LogWarning($"[Warning] Logging to Application insights. {i}");
    }

    // We don't want more than one orchestrator running at the same time:
    var orchestrationStatus = await starter.GetStatusAsync(OrchestratorInstanceGuid);
    if (orchestrationStatus == null || !orchestrationStatus.IsBusy())
    {
        var instanceId = await starter.StartNewAsync(OrchestratorFunctionName, OrchestratorInstanceGuid, null);
        log.LogInformation($"Triggering {OrchestratorFunctionName} function with an ID '{instanceId}'.");
    }
    else
    {
        log.LogInformation($"{OrchestratorFunctionName} function with an ID '{OrchestratorInstanceGuid}' is already running.");
    }
}

更多信息:

  • n获取软件包microsoft.net.sdk.functions v1.0.26
  • Azure function v2通过AppInsights_InstrumentationKey
  • 连接到应用洞察
  • Application insights显示实时遥测和异常
  • Application insights显示了一些数据,但不是来自iLogger

共有1个答案

斜昊空
2023-03-14

活动日志不是您要查找日志的地方。使用ilogger编写的日志作为跟踪存储在application Insights中。您可以使用Search菜单项(在第二个屏幕截图中的Availability菜单项正上方的选项)来查询它们

活动日志将向您显示与应用程序洞察资源本身有关的事件,而不是它包含的数据。

 类似资料:
  • 有什么想法会出什么问题吗?

  • 我有一个使用应用程序洞察的.NET5Web应用程序。我尝试使用登录AI trace。然而:当分析Azure上AI中的“痕迹”内容时,日志并不显示。 启动部分: 应该进行日志记录的类的构造函数通过依赖注入来注入ILogger和AppInsights: 在该方法中,我有以下两个日志记录尝试: instrumentationkey存储在appsettings中(显然正确,因为telemetryClien

  • 我正在设置一个新的web应用程序,通过Application Insights登录。我已经安装了AI,并且看到了所有预期的遥测(服务器请求、失败的请求等),但没有通过ILogger发送日志。我已经看过所有类似的问题,我可以找到这样,但没有解决我的问题。 我正在使用。NET 5和2.17版。Microsoft的0(最新版本)。应用程序指示灯。AspNetCore-nuget包。连接字符串和检测键显示

  • 唯一可以解决这一问题的方法是在startup.configure()中添加下面一行代码: 上面的解决方案是不可取的,因为我们希望根据环境不同地配置日志级别,因此基于配置的解决方案将是首选的。此外,我猜测问题是配置相关的,因为它在本地运行良好。在Azure中没有特殊的配置。 下面是整个startup.configure():

  • 我怎么能看到它?在portal中,我发现了一个选项,可以看到会话计数,但不是持续时间。

  • 我正在尝试将API请求负载和响应数据记录到Azure Application Insight。使用跟踪我可以记录。但是我想知道什么是将请求和响应数据记录到application Insight的最佳方法。因为数据是巨大的,所以API调用的数量会更多。我不能仅仅使用跟踪来跟踪数十万个请求和响应数据。我尝试了一些博客,比如使用itelemetryinitializer/httpcontext.feat