我正在努力用 Azure Functions 替换一些 WebJobs,除了记录正在发生的事情外,似乎一切正常。我已经尝试使用在 VS2017 中创建的默认函数并且在本地运行它没有问题。部署到 Azure 后,我在任何地方都看不到日志条目的详细信息。
使用 Kudu 查看日志似乎没问题,只是我注意到函数调用的日志参数始终为空。情况并非如此,因为该函数确实运行并给出了预期的输出,如果 log 真的为空,则会失败。
下面是这个函数的样子:
public static class Function1
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
return name != null
? (ActionResult)new OkObjectResult($"Hello, {name}")
: new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}
}
我本来希望通过转到https://xxx.scm.azurewebsites.net/azurejobs/#/functions来查看 Kudu 中日志的输出,但是当我切换输出时我看不到详细信息 - 它永远不会加载(并且它显示日志参数为空 - 虽然可能正在由 DI 解析)。
虽然这个函数只是一个测试,但我还有其他更复杂的函数,我需要记录详细信息。
我并不热衷于研究 Application Insights,因为这似乎是一种方式,对于这种不会被大量使用的简单功能来说太过分了。
对于 runtime 2.x 中的 v2 函数,doc解释了
门户中使用AzureWebJobsDashboard设置的 WebJobs 仪表板替换为 Azure Application Insights,后者使用APPINSIGHTS_INSTRUMENTATIONKEY设置。
就像您所看到的一样,使用 AzureWebJobsDashboard 设置,日志参数为空并且没有日志。恐怕替换为已强制执行并且仪表板已被弃用。
至于应用洞察的使用,我们可以直接利用基本的日志监控,无需进一步调查。创建它并在应用程序设置中添加它的instrumentationkey 后,我们可以看到Monitor 视图类似于Dashboard。
如果我们无论如何都不喜欢它,kudu( https://<functionAppName>.scm.azurewebsites.net/DebugConsole
) 中的日志已经准备好了( D:\home\LogFiles\Application\Functions\function\<functoinName>
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句