如何以编程方式读取 azure web 作业日志

How to programmatically read azure web job log

我有一个由队列触发的连续 Web 作业。 Functions 方法接受一个 TextWriter 参数,我用它来编写我的作业的输出。

public static void ProcessQueueMessage([QueueTrigger("build")] ProjectTrigger projectInfo, TextWriter log)

我可以浏览 Azure 门户中的 azure-jobs-host-archive 存储容器并查看最新文件以查看主机日志,其中包含 JSON 其中包含 [=] 中实际日志的以下路径15=]容器。

 // ...
 "Arguments": {
    "projectInfo": "{\"ProjectId\":1}",
    "log": null
  },
  "Reason": "AutomaticTrigger",
  "StartTime": "2015-03-31T00:22:33.0447775+00:00",
  "OutputBlob": {
    "ContainerName": "azure-webjobs-hosts",
    "BlobName": "output-logs/06001f0c69064d4289b3501d0064f11c.txt"
  },
 // ...

有了它,我可以浏览到 Azure 门户中的 azure-webjobs-hosts 容器并找到 BlobName 指定的文件。

太好了,但我如何以编程方式执行此操作?我希望能够在我的 Web 应用程序中显示输出日志。如果我在作业 运行 时知道主机存档文件的路径,我可以将它存储在 SQL 中并稍后访问它。这可能吗?

我没有找到我正在寻找的确切答案,但您可以使用 BlobAttribute 将作业日志保存到特定的 blob 路径,其中 ProjectIdIdProjectTrigger.

的属性
public static void ProcessQueueMessage([QueueTrigger("build")] ProjectTrigger projectInfo, 
                   [Blob("projecthistory/{ProjectId}/{Id}.txt", FileAccess.Write)] TextWriter log)