我有一个 Azure 功能
Program.cs(默认)
var host = new HostBuilder()
.ConfigureFunctionsWebApplication()
.ConfigureServices(services =>
{
services.AddApplicationInsightsTelemetryWorkerService();
services.ConfigureFunctionsApplicationInsights();
})
.Build();
日志工作区中的功能日志
问题是,为什么我在
Azure Portal Log Console
中看到以下日志
_logger.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
但不在
Logs workspace
?
有什么想法吗?
日志级别设置为信息: 主机.json
{
"version": "2.0",
"logging": {
"LogLevel": {
"Default": "Information"
},
"applicationInsights": {
"LogLevel": {
"Default": "Information"
},
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request;Exception"
},
"enableLiveMetricsFilters": true
}
}
}
_logger.LogInformation("[Http Triggered Function] Information.");
_logger.LogWarning("[Http Triggered Function] Warning.");
_logger.LogError("[Http Triggered Function] Error.");
似乎根本没有考虑 host.json 配置。如果我只想记录错误
{
"version": "2.0",
"logging": {
"LogLevel": {
"Default": "Error",
"Function": "Error",
"Function.Function1": "Error",
"Function.ChangeTrackingFunction": "Error"
},
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
}
}
警告仍记录到控制台和日志工作区中。
在 Azure 函数的日志工作区中,如果缺少自定义日志,请检查这些最可能的罪魁祸首:对此有一些可能的解释:
日志记录配置:确保在您使用的 Azure Function App 中配置日志记录。使用 Azure 门户设置验证是否已设置 Application Insights。
日志级别:确保您的函数代码以正确的日志级别调用日志。例如,如果您选择 Node.js,则应在信息级别或更高级别使用 console.log()。在 Python 中,根据需要使用 print() 语句。
诊断设置:了解您是否已打开 Function App 的诊断设置。如果没有这些设置,日志不太可能传输到 Log Analytics 工作区。它们确实可以在 Azure 门户中的 Function App 的“Monitoring”选项卡下激活。
Application Insights 集成:您需要确认您的 Function App 已与 Application Insights 集成。缺少或错误的检测密钥或连接字符串意味着日志可能无法传输到 Application Insights,因此不会显示在日志工作区中。