Azure 网络作业 Logging/Emailing

Azure WebJob Logging/Emailing

我已将控制台应用程序转换为计划的 WebJob。一切正常,但我在弄清楚如何完成我想要的错误 logging/emailing 时遇到了一些麻烦。

1.) 我正在使用 Console.WriteLine 和 Console.Error.WriteLine 创建日志消息。当我转到 WebJob 运行 详细信息时,我看到这些显示在门户中。有什么办法可以将这些日志保存到某个地方的文件中吗?我将我的存储帐户连接字符串添加为 AzureWebJobsDashboard 和 AzureWebJobsStorage。但这似乎刚刚创建了一个 "azure-webjobs-dashboard" blob 容器,其中只有一个 "version" 文件。

2.) 有没有办法让行号在 WebJob 日志中显示异常?

3.) 从 WebJob 控制台应用程序中发送电子邮件的最佳方式是什么?例如,如果发生某种情况,我可能想让它给我 and/or 其他人(取决于情况)发送一封电子邮件,同时使用 Console.WriteLine 或 [=24= 记录该情况].我看过有关通过队列触发电子邮件或在作业失败时触发电子邮件的信息,但是当 运行 作为 WebJob 时,直接在控制台应用程序代码中发送电子邮件的最佳方法是什么?

你的工作是如何安排的?听起来您正在使用 WebJobs SDK - 您是否正在使用 TimerTrigger 进行调度(来自 Extensions 库)?该扩展库还包含一个新的 SendGrid 绑定,您可以使用它从您的工作职能发送电子邮件。我们计划对此进行扩展,以便像您描述的那样促进失败通知,但目前还没有。然而,没有什么能阻止您自己构建一些东西,使用新的 JobHostConfiguration.Tracing.Trace 插入您自己的 TraceWriter,您可以使用它来捕获 errors/warnings 并按您认为合适的方式行事。所有这些都在 beta1 预发布版中。

使用插入自定义 TraceWriter 的方法,我一直在考虑编写一个允许您指定错误的方法 threshold/sliding window,如果错误率超过,则发送一封电子邮件或将发送其他通知。所有的部分都在那里,只是还没有完成:)

关于日志记录,作业日志(包括您的Console.WriteLines)实际上是写入您的网络应用程序中的磁盘(details here). You should be able to see them if you browse your site log directory. However, if you're using the SDK and Dashboard, you can also use the TextWriter/TraceWriter bindings for logging. These logs will be written to your storage account and will show up in the Dashboard Functions page per invocation. Here's an example

  1. 记录到文件:您可以使用自定义 TraceWriter https://gist.github.com/aaronhoffman/3e319cf519eb8bf76c8f3e4fa6f1b4ae

  2. 异常堆栈跟踪行号:您需要确保您的项目是在调试信息设置为 "full" 的情况下构建的(更多信息 http://aaron-hoffman.blogspot.com/2016/07/get-line-numbers-in-exception-stack.html

  3. SendGrid、亚马逊简单电子邮件服务 (SES) 等