【问题标题】:Azure function apps logs not showingAzure 函数应用日志未显示
【发布时间】:2021-08-23 16:26:31
【问题描述】:

我对 Azure 比较陌生,我刚刚完成了有关如何创建新 Azure 函数的教程,该函数在创建新 blob 时触发,并将其作为默认代码。

public static void Run(Stream myBlob, string name, TraceWriter log)
{
    log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
}

根据我在教程中看到的内容,我应该能够在代码下方的“日志”区域中看到一些信息,但没有任何显示,我已经检查了一段时间的解决方案但不能似乎找不到任何有用的东西。

任何帮助将不胜感激。

【问题讨论】:

    标签: function azure logging azure-functions


    【解决方案1】:

    日志窗口有点脆弱,并不总是显示日志。但是,日志也会写入日志文件。

    您可以从 Kudu 控制台访问这些日志: https://[your-function-app].scm.azurewebsites.net/

    从菜单中,选择调试控制台 > CMD

    在文件列表中,进入 LogFiles > Application > Functions > Function > [Name of your function]

    在那里你会看到一个日志文件列表。

    【讨论】:

    • 我有大量的日志丢失了。它似乎没有在合理的时间范围内将它们写入文件存储,并且昨天过去的每个日志文件都丢失了。我的某个地方是否有拙劣的设置?
    • 完全关闭浏览器选项卡并重新打开它帮助了我。 SignalR 发布到浏览器可能存在一些问题?
    • 这种方式可行……有时。但不总是。直接查看文件夹中的日志文件是reilable。
    • 这个目录只有当天的日志文件。知道以前的日志被移动到哪里(不同的目录)吗?
    • 好的,我使用的是共享应用服务计划,但那里不支持 Kudu(日志)文件访问。使用专用的可以让我访问文件。
    【解决方案2】:

    遵循此处的建议对我有用。 Configuring Log Level for Azure Functions

    如果您希望在按“运行”后立即在门户控制台中显示日志,请转到“功能应用设置”并将以下内容添加到您的 host.json 文件中:

    "logging": {
        "fileLoggingMode": "always",
        "logLevel": {
            "default": "Information",
            "Host.Results": "Error",
            "Function": "Trace",
            "Host.Aggregator": "Trace"
        }
    }
    

    请注意,这只适用于 Javascript 函数。对于本地开发的其他语言的功能,控制台可能会有些紧张。

    【讨论】:

    • 这不再适用。此外,如果您从 ziip 文件运行,则无法编辑 hosts.json
    • 我将所有该死的属性 [0] 设置为 Trace,在流日志中“信息”下方的任何内容都不可见。至少对于我的 .NET 6 隔离函数应用程序而言。 [0]:docs.microsoft.com/en-us/azure/azure-functions/…
    • @HeinrichUlbricht 是的,抱歉,我只能说 Javascript。我对 Python 等其他语言的运气不太好。
    • @JamesShapiro 感谢您的反馈。是的,不是你的错 :D 但是经过几个小时的修补,我有点沮丧。至少我现在知道为什么一位同事确实以“信息”级别记录所有内容......
    【解决方案3】:

    Microsoft 不断更改界面,因此其中许多答案不再正确。

    我发现查看日志的最佳方式是进入 Application Insights 以查看函数本身,然后在 Transaction search 中搜索日志中可能存在的一些文本强>。

    【讨论】:

      【解决方案4】:

      Azure 门户已于上周更新,他们将日志从 Monitor 移至实际 Azure Function 的主目录。但是,要查看它们,您需要单击测试。我向 Microsoft 支持提出了一个问题,他们花了几天时间摆弄他们的拇指,然后我自己才找到答案。我希望这可以为其他人节省一点时间

      【讨论】:

      • 我有一个类似的问题,我的功能日志不显示(在 Kudu 或直播中),除非我进入门户并单击运行,然后显示后续日志。这符合你的经验吗?您在支持下的讨论有什么结果吗?
      • 我发现函数不需要以这种方式运行以显示在日志中。例如,我正在运行一个时间触发的函数,只要我在执行时查看日志控制台,我就可以看到记录的消息,而无需单击“运行”。
      【解决方案5】:

      如果您在函数执行时正在查看该窗口,则日志消息应显示在函数代码下方:

      要查看在您不查看时发出的日志消息,您需要配置 Application Insights。如果已配置,则应显示在 Monitor 选项卡下:

      【讨论】:

        【解决方案6】:

        确实,Azure 门户中 Function App 的日志部分似乎很脆弱。我让它打开了一些我们未使用的,然后它不再记录任何内容。关闭功能应用程序并重新打开它解决了这个问题。

        【讨论】:

          【解决方案7】:

          我会完全避免等待日志出现在函数应用中。转到左侧的 Monitor 并通过它。即使那样,他们通过时可能会有 5 分钟的延迟。 aws 究竟如何成为这个领域中唯一能够立即为您提供日志的提供商? GCP 也对它不利..(不确定 alicloud)

          【讨论】:

          • 仅供参考,如果启用它,您通常可以在 Application Insights 中找到实时日志(您可能还需要根据我上面的回复将“日志记录”部分添加到 host.json)。我同意这比查看 CloudWatch 日志更麻烦,但 Azure 在这方面确实做得不错。
          【解决方案8】:

          如果您使用 Visual Studio Code 和 Azure Functions Extension (link),您可以直接连接到函数的日志流:

          它将打开一个输出窗口,您可以在其中查看所有日志。

          编辑:

          要达到这一点,您必须通过 Azure Functions Extension 选项卡,然后选择您的订阅,该订阅将具有您拥有的任何功能。

          【讨论】:

          • 但是你如何获得资源事件函数?请将其添加到您的答案中。
          • @DanielRudy 你去 :)
          猜你喜欢
          • 2022-11-11
          • 2021-12-11
          • 2020-02-04
          • 2012-03-26
          • 2020-12-26
          • 1970-01-01
          • 2020-03-03
          • 2021-12-29
          • 1970-01-01
          相关资源
          最近更新 更多