函数日志记录未在Kudu中显示详细信息-日志参数始终显示为空

时间:2019-02-19 00:27:38

标签: azure azure-functions

我正在通过用Azure Functions替换某些WebJob进行工作,除记录正在发生的事情外,其他所有工作似乎都可以正常进行。 我尝试使用VS2017中创建的默认函数,并在本地运行它没有问题。部署到Azure后,我无法在任何地方看到日志条目的详细信息。

使用Kudu查看日志似乎还可以,只是我注意到函数调用的日志参数始终为null。情况并非如此,因为该函数确实运行并提供了预期的输出,并且如果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中日志的输出,但是切换输出时我看不到详细信息-它从不加载(并且日志参数显示为null-也许正在由DI解决)。

尽管此功能只是测试,但我确实还有其他更复杂的功能,需要它们的日志记录详细信息。

我并不热衷于研究Application Insights,因为这种方式对于那些不会被大量使用的简单功能来说是过大的。

1 个答案:

答案 0 :(得分:0)

对于运行时2.x​​中的v2功能,doc解释

  

使用AzureWebJobsDashboard设置的门户中的WebJobs仪表板将替换为使用APPINSIGHTS_INSTRUMENTATIONKEY设置的Azure Application Insights。

与您所看到的一样,使用AzureWebJobsDashboard设置,日志参数为null,并且那里没有日志。恐怕替换为已被执行且仪表板已被弃用。

关于应用程序见解的用法,我们可以利用基本的日志监视,而无需任何进一步的调查。创建它并将其Instrumentationkey添加到“应用程序设置”中后,我们可以看到Monitor视图类似于Dashboard。

enter image description here

如果我们仍然不喜欢它,可以在kudu(https://<functionAppName>.scm.azurewebsites.net/DebugConsole)中登录(D:\home\LogFiles\Application\Functions\function\<functoinName>)。