【问题标题】:Azure function logging doesn't appear to be workingAzure 函数日志记录似乎不起作用
【发布时间】:2017-01-31 00:32:26
【问题描述】:

我能够成功调用我的函数并让它们执行我希望它们执行的操作。问题是日志看起来并没有保存在任何地方,而且我看不到如何查看它们。如果发生错误,我会想要这样做。作为一项测试,我的工作功能只是在调用 log.Info 时执行它。在本地测试时,它将消息打印到控制台。我相信我已经正确启用了一切,但让我解释一下我做了什么,以防万一。

在我的应用服务中,在监控 -> 诊断日志下,我已启用所有内容。应用程序日志记录(文件系统)详细、应用程序日志记录 (Blob) 详细(已设置存储位置)、详细的错误消息和失败的请求跟踪已打开。

在我的函数中,我使用了传递给我的 run 方法的 TraceWriter 对象(我从模板开始)。

请注意,功能设置为需要身份验证。如果我单击“监视器”选项卡,则不会出现任何内容。它只是永远说“正在加载......”并且没有任何信息。也许这是因为身份验证?

我使用 Azure 存储资源管理器浏览到我的 blob。 “日志” blob 存在,我确实看到了一组嵌套目录,直到现在。然而,它只包含一个 354 字节的文件,其中包含几行一些随机信息。此文件似乎永远不会更新或变大。

我使用 FTP 尝试浏览到可能存在日志的位置,但那里没有包含任何日志文件的目录。

我还为我的函数应用 ({myfunctionapp}.scm.azurewebsites.net/azurejobs/#/functions) 去了 KUDU。虽然我确实看到我的函数被成功调用,但我在任何地方都看不到任何对 log.Info 的调用。

我尝试使用不同的记录器,并且作为测试:System.Diagnostics.Trace.TraceError("test error");

我也没有看到此消息出现在任何地方。

就设置而言,我是否遗漏了什么?问题是我需要身份验证吗?如果是后者,还有办法查看日志吗?我绝对必须启用身份验证。谢谢。如果有帮助,下面是我的设置和监控选项卡的链接。

设置:https://postimg.org/image/u57m2xbl5/ 监控:https://postimg.org/image/uou10arch/

【问题讨论】:

    标签: azure azure-functions


    【解决方案1】:

    身份验证不会导致日志记录出现任何问题,并且 Log.Info 应该开箱即用,无需设置。

    我强烈建议您为专用函数应用启用 AlwaysOn。 “监控”选项卡的加载时间过长可能是因为您的网站处于“冷”状态,启动时间较长。

    如果您转到 {myfunctionapp}.scm.azurewebsites.net/DebugConsole 并导航到 LogFiles/Application/Functions,您会在那里看到任何预期的日志吗?此外,当您从门户运行功能时,您会在日志窗口中看到日志吗?

    【讨论】:

    • 所以我在你提到的目录中看到了一些东西。我现在也在我的表存储中看到它(虽然不是 blob,但并不在乎,只要它在某个地方)。我想我可能只是找错地方了。
    • 我确实按照您刚才的建议启用了“始终开启”,但监控页面从未加载或更改。我假设这是由于启用了身份验证?我已经看到另一个关于启用身份验证如何导致这些“错误:我们无法访问您的函数应用程序(未经授权)..”消息出现在门户中的 SO 主题,我也有,这是一个已知问题。
    • 尝试打开浏览器开发人员工具,查看控制台中是否记录了任何错误,或者在您访问监控选项卡时是否有任何网络请求返回失败,这可能有助于阐明问题。跨度>
    • 我在进入监控页面时在控制台看到这个:"{"message":"请求无效。","modelState":{"host.String":["A值是必需的,但请求中不存在。"]}}"。这:{myfunctionapp}.scm.azurewebsites.net/azurejobs/api/functions/definitions/undefined/invocations?limit=20:1 GET https://{myfunctionapp}.scm.azurewebsites.net/azurejobs/api/functions /definitions/undefined/invocations?limit=20 404(未找到) zone.min.js?v=39bd38aa:1 GET https://{myfunctionapp}.scm.azurewebsites.net/azurejobs/api/functions/definitions/undefined /invocations?limit=20 404(未找到)
    • 好的,“未定义”是问题的根源。当您说您已启用“身份验证”时,您使用的是应用服务身份验证还是功能级别身份验证?查看 github 上的函数门户代码,如果您启用了应用服务身份验证且未设置为匿名 (github.com/projectkudu/AzureFunctionsPortal/blob/…),您将获得一个未定义的主机 ID。
    【解决方案2】:

    如果我打开 Fiddler,我也会发生同样的事情......关闭 Fiddler,一切都很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 2016-09-29
      • 1970-01-01
      • 2018-08-24
      • 2011-12-27
      相关资源
      最近更新 更多