【问题标题】:Azure WebJobs: Can't find Trace loggingAzure WebJobs:找不到跟踪日志记录
【发布时间】:2023-04-10 15:32:01
【问题描述】:

我已按照 this Microsoft webpage 上的说明记录来自 Azure WebJob 的消息,但我的任何消息都没有出现在日志中。

在我的 WebJob 中,我使用

编写日志消息
Trace.TraceInformation("blah blah blah");

在配置文件的 应用程序诊断 部分,我使用“详细”选项打开了 Blob 存储日志记录。

正在创建日志文件(尽管有时我必须等待几分钟 - 在一种情况下直到第二天早上 - 直到日志出现在 blob 存储中)但日志不包含我的Trace 消息。

那么我如何将消息记录到这些日志文件中,和/或Trace 被写入何处?

这是我配置的日志记录选项的图像:

而且配置的 blob 存储肯定和我正在查看的一样。

【问题讨论】:

    标签: azure logging trace azure-webjobs


    【解决方案1】:

    要指定 Web Job 日志的存储帐户,您需要在 CONFIGURE 选项卡下添加连接字符串 > 连接字符串 部分,连接字符串的名称必须是 AzureWebJobsDashboard.

    它应该如下所示:

    • 名称AzureWebJobsDashboard
    • DefaultEndpointsProtocol=https;AccountName="";AccountKey=""
    • 类型自定义

    您也可以在 Azure 门户中查看日志,打开 Web 应用并选择 WEBJOBS 选项卡,单击 Web 作业的 URL,它将显示上次运行,单击 Toggle 按钮,它显示了运行的详细信息,包括应用程序使用以下语句编写的自定义消息。

    Console.WriteLine("Error While Doing Something ...");
    

    【讨论】:

    • 感谢您的帮助,@Sajad。我已经配置了连接字符串,这就是它为每次执行 WebJob 创建日志的原因)。但是,我浏览了 Toggle 按钮提供的日志记录,但我的 Trace 消息都没有。我的 WebJob 的旧版本(pre-Trace-logging)是否有可能被缓存,即使我已经在 Web 界面中删除了它并上传了一个新的 zip 文件夹?这也可以解释为什么即使我确定已修复它,我仍然会看到相同的异常。
    • 如果您已修复错误并且它仍然显示,那么您的旧实例正在运行。也许删除该作业并使用新名称创建一个新作业,然后他们会看到。
    • 不走运,同样的异常仍然存在,Trace 消息均未显示 - 无论是在 Web 界面(在“切换”下)还是在 blob 存储帐户中。我是否正确使用Trace?我已经用我配置的诊断选项的屏幕截图更新了原始帖子。
    • 这里提到的连接字符串是针对 WebJobs SDK 特定日志的,与 Trace.* 跟踪无关。
    • 不需要启用应用程序诊断。正如我在回复中提到的,您只需指定 AzureWebJobsDashboard 连接字符串。但是,再次仔细查看您的代码后,我发现您实际上需要使用 Console.Out 而不是 Trace,我已经编辑了我的回复,请看一下并将您的 Trace.TraceInformation 替换为 Console.Out.WriteLine。仅供参考,我已经在 PROD 中工作了很长时间。
    【解决方案2】:

    Azure WebJobs 提供two mechanisms 将输出发送到WebJobs SDK dashboard 上可见的日志:

    1. Console 类的静态方法(例如Console.WriteLine
    2. 使用 TextWriter 对象作为方法的“log”参数,由 SDK 的一个或多个属性修饰(例如 [NoAutomaticTrigger]

    实际上,这解释了您的问题:

    • Azure WebJobs 中提供的日志记录机制(本机支持 Trace)与 Azure Web 应用程序中使用的机制无关(this previous answer 这个问题解释了如何配置日志记录)
    • Trace 不支持作为默认机制,这解释了为什么您“找不到跟踪日志记录”

    然而,在这两种情况下,添加一个TraceListener 来捕获Trace 语句的输出都很容易。

    This answer 解释了如何为Console 执行此操作。
    而且,log 对象可以添加为TextWriterTraceListener

    这对我来说按预期工作。

    【讨论】:

    • “默认机制不支持跟踪” --> 不正确,支持。
    • @AmitApple 好吧,假设它是“真实且受支持”的默认机制。您能否通过提供证实这一主张的答案来帮助我和 OP?
    【解决方案3】:

    要轻松查看您的 WebJob 和网站日志,您可以使用 Azure 网站日志浏览器 站点扩展,在此处找到有关安装它的更多信息 - http://blog.amitapple.com/post/2014/06/azure-website-logging/

    如果您仍然看不到您的日志,或者它们需要很长时间才能显示(不应该)在msdn forum 上启动一个线程,这将更适合此类问题。

    【讨论】:

      【解决方案4】:

      在从门户重新启动应用服务之前,我也找不到我的跟踪日志。

      跟踪日志应该可以正常工作,如 here 所述,并存储在 D:\home\LogFiles\application 下。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-16
        • 1970-01-01
        • 2018-09-07
        • 2017-09-24
        • 2013-11-13
        • 2011-09-16
        • 1970-01-01
        相关资源
        最近更新 更多