【发布时间】:2019-03-28 22:52:16
【问题描述】:
我有一个配置了 Application Insights 的 Azure Function App。我的函数中有一些 LogTrace() 消息,但它们没有被 AppInsights 捕获。我必须在某处配置最低日志级别吗?
【问题讨论】:
标签: azure azure-functions azure-application-insights
我有一个配置了 Application Insights 的 Azure Function App。我的函数中有一些 LogTrace() 消息,但它们没有被 AppInsights 捕获。我必须在某处配置最低日志级别吗?
【问题讨论】:
标签: azure azure-functions azure-application-insights
请查看article,了解如何为函数 v1 或 v2 设置日志级别。
在文件host.json 中,对于文件“Function”,将其值设置为 Trace。然后 LogTrace() 可以登录到应用程序洞察中。
Azure 函数 v2 的示例 host.json,可以将跟踪消息记录到 Application Insights:
{
"version": "2.0",
"logging": {
"fileLoggingMode": "always",
"logLevel": {
"default": "Information",
"Host.Results": "Error",
"Function": "Trace",
"Host.Aggregator": "Trace"
}
}
}
如果您使用 Visual Studio 发布您的函数应用,您可以在发布前按照上述修改您的 host.json 文件。
如果您想更改 azure 门户中的日志级别,请按照以下步骤操作:
在 Azure 门户中,导航到您的函数应用 -> 在函数应用设置中,确保启用读/写,然后在 host.json 中更改日志级别以跟踪。
【讨论】:
为了进一步补充@Ivan Yang 的出色答案,您可以在 Azure Functions 的 v2 中指定每个函数的最低日志记录级别。 (我尚未验证它是否在 v1 中有效/无效)使用他的示例 host.json:
{
"version": "2.0",
"logging": {
"fileLoggingMode": "always",
"logLevel": {
"default": "Information",
"Host.Results": "Error",
"Function": "Trace",
"Function.FunctionA": "Warning",
"Host.Aggregator": "Trace"
}
}
}
Function.FunctionA 假设您有一个名为(通过FunctionName 属性)“FunctionA”的函数,例如:
[FunctionName("FunctionA")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "")]HttpRequest req, ILogger log)
{
...function code here
}
因此,您在FunctionName 属性中指定的任何值都可用于明确定义该函数的最低日志级别。在上面的host.json 示例中,默认情况下,所有函数的最低日志级别为Trace,而FunctionA 的最低日志级别为Warning。
【讨论】:
我在 azure 门户中看不到任何 host.json 文件,但我可以从应用程序设置(环境变量)更新它。要替换默认日志级别设置键 AzureFunctionsJobHost__logging__LogLevel__Default 和值 Trace/Debug/Information 或任何您想要的。就像我在我的 host.json 中的 Default 是 Trace 但在天蓝色它是 Information。因此,只需为 loglevel 的所有键添加新的环境变量(应用程序设置)并以 AzureFunctionsJobHost__logging__LogLevel__ 为前缀并设置所需的值,您的主机设置将被覆盖。
您可以阅读更多Here
【讨论】: