有人可以解释一下在使用Azure Function V2(.net Core)时如何强制ILogger将某些东西实际记录到应用程序见解中吗?
我们已配置了Application Insights,它显示了实时广播和未处理的异常。我们正在努力进行的工作是迫使应用程序见解存储通过默认ILogger创建的日志。
无论我们使用哪种日志级别(信息,警告,错误,严重)-应用程序见解中都不会存储任何内容。
我还尝试创建500条日志消息,希望将其批量推送到应用程序见解中。
我在这里缺少明显的东西吗?有人可以建议如何使用默认的ILogger,以便将某些东西传递给与Azure函数App V2(.net核心)关联的Application Insights吗?
host.json
{
"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
}
}
}
}
Azure Function V2,TimerTrigger,DurableOrchestrationClient:
[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.");
}
}
更多信息:
答案 0 :(得分:3)
活动日志不是您要查找日志的地方。使用Ilogger
编写的日志将作为跟踪存储在应用程序见解中。您可以使用 Search 菜单项(第二个屏幕截图中 Availability 菜单项正上方的选项)进行查询
活动日志将向您显示有关应用程序见解资源本身的事件,而不是与其中包含的数据有关的事件。