带触发计时器的Azure功能不会在Monitor下显示日志

时间:2020-06-24 16:29:24

标签: azure azure-functions azure-application-insights

我正在测试我的Azure Functions,并且遇到了一个有趣的问题。我想查看一个函数是否正在运行以及结果。我先打开函数,然后打开 getTokenRefresh 。显然,此功能从未启动过。

enter image description here

几个小时后,我决定打开Application Insights。惊喜!所有日志都在那里。

enter image description here

如果我从门户网站运行功能并再次打开监视器,然后单击“日志”选项卡,则看不到任何日志。同样,我只能在Application Insights中找到所有内容。

另一个有趣的事情是此Azure函数中的其他函数,请向我显示所有详细信息(相信我是同一个函数)。

enter image description here

从代码的角度来看,我在所有函数中都使用了依赖注入:

public class GetTokenRefreshTimer
{
    private ILogger _log;

    public GetTokenRefreshTimer(ILogger<GetTokenRefreshTimer> log)
    {
        _log = log;
    }

    [FunctionName("getTokenRefreshTimer")]
    public async Task Run([TimerTrigger("0 */20 * * * *")]TimerInfo myTimer)
    {
        _log.LogInformation("GetTokenRefresh starts");
    }
}

1 个答案:

答案 0 :(得分:0)

天蓝色功能的日志很脆弱。因此有时您看不到日志,但这并不意味着azure函数未运行。

如果您想知道该功能正在运行,则需要转到azure功能的kudu并查看该功能应用的日志文件。(Application Insights中的日志来自此位置)。

日志文件位于以下位置:

打开浏览器并转到https://yourfunctionappname.scm.azurewebsites.net/DebugConsole,然后单击进入LogFiles / Application / Functions / Function / yourtriggername。您将在此位置找到日志文件。