我有一个配置了应用程序见解的Azure功能应用程序。我的函数中包含一些LogTrace()
消息,但AppInsights并未捕获它们。我必须在某个地方配置最低日志级别吗?
答案 0 :(得分:3)
请查看此article,了解如何设置函数v1或v2的日志级别。
在host.json文件中,对于归档的“函数”,将其值设置为Trace。然后可以将LogTrace()登录到应用程序见解中。
为azure函数v2采样host.json,该函数可以将跟踪消息记录到应用程序见解中:
{
"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中进行跟踪。
答案 1 :(得分:1)
在azure门户中看不到任何host.josn文件,但可以从应用程序设置(环境变量)更新它。要替换默认日志级别,请设置键AzureFunctionsJobHost__logging__LogLevel__Default
和值Trace
/ Debug
/ Information
或任何您想要的值。就像在我的host.json中一样,json Default
是Trace
,但天生就是Information
。因此,只需为日志级别的所有键添加新的环境变量(应用程序设置)并以AzureFunctionsJobHost__logging__LogLevel__
为前缀,然后设置所需的值,主机设置将被覆盖。
您可以阅读更多Here
答案 2 :(得分:0)
要进一步添加到@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
。