Azure WebJobs:找不到跟踪日志记录

Azure WebJobs: Can't find Trace logging

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

在我的 WebJob 中,我使用

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

在配置文件的 应用程序诊断 部分,我使用 "Verbose" 选项打开了 blob 存储日志记录。

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

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

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

并且配置的 blob 存储与我正在查看的完全相同。

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

应该如下所示:

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

你也可以在Azure portal中查看日志,打开Web应用程序和select WEBJOBS选项卡,点击web作业的URL,它将显示最后 运行s,单击 Toggle 按钮,显示 运行 的详细信息,包括应用程序使用以下语句编写的自定义消息。

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

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

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

Azure WebJobs 报价 two mechanisms of sending output to the log visible on the WebJobs SDK dashboard:

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

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

  • Azure WebJobs 中提供的日志记录机制(原生支持 Trace)与 Azure Web 应用程序中使用的机制无关( 这个问题解释了如何配置日志记录)
  • Trace 不支持作为 默认 机制,这解释了为什么 "Can't find Trace logging"

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

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

这符合我的预期。

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

跟踪日志应该如前所述 here 正常工作并存储在 D:\home\LogFiles\application.