我已将控制台应用转换为预定的WebJob。一切都运行良好,但我在搞清楚如何完成我想要的错误记录/电子邮件方面遇到了一些麻烦。
1。)我正在使用Console.WriteLine和Console.Error.WriteLine来创建日志消息。当我转到WebJob运行详细信息时,我看到这些显示在门户中。有没有办法将这些日志保存到某个地方的文件?我将存储帐户连接字符串添加为AzureWebJobsDashboard和AzureWebJobsStorage。但这似乎刚刚创建了一个“azure-webjobs-dashboard”blob容器,其中只有一个“版本”文件。
2。)有没有办法让线号显示在WebJob日志中的异常?
3.。)从WebJob控制台应用程序中发送电子邮件的最佳方式是什么?例如,如果发生某种情况,我可能希望让它发送给我和/或其他人(具体取决于条件)电子邮件以及使用Console.WriteLine或Console.Error.WriteLine记录条件。我已经看到有关通过队列触发电子邮件或在作业失败时触发电子邮件的信息,但是当它作为WebJob运行时,直接在控制台应用程序代码中直接发送电子邮件的最佳方式是什么?
答案 0 :(得分:3)
你的工作如何安排?听起来您正在使用WebJobs SDK - 您是否使用TimerTrigger进行调度(来自Extensions库)?该扩展库还包含一个新的SendGrid绑定,您可以使用该绑定从作业功能发送电子邮件。我们计划对此进行扩展以促进您描述的失败通知,但它还没有。然而,没有什么能阻止你自己构建一些东西,使用新的JobHostConfiguration.Tracing.Trace来插入你自己的TraceWriter,你可以使用它来捕获错误/警告并按你认为合适的方式行事。所有这些都在beta1预发行版中。
使用这种插入自定义TraceWriter的方法,我一直在考虑编写一个允许您指定错误阈值/滑动窗口的方法,如果错误率超过,将发送电子邮件或其他通知。所有的作品都在那里,还没有完成它:)
关于日志记录,作业日志(包括您的Console.WriteLines)实际上已写入Web App(details here)中的磁盘。如果浏览站点日志目录,您应该能够看到它们。但是,如果您使用的是SDK和Dashboard,则还可以使用TextWriter / TraceWriter绑定进行日志记录。这些日志将写入您的存储帐户,并将在每次调用时显示在“仪表板功能”页面中。这是一个example。
答案 1 :(得分:0)
记录到文件:您可以使用自定义TraceWriter https://gist.github.com/aaronhoffman/3e319cf519eb8bf76c8f3e4fa6f1b4ae
异常堆栈跟踪行号:您需要确保构建的项目调试信息设置为“完整”(更多信息http://aaron-hoffman.blogspot.com/2016/07/get-line-numbers-in-exception-stack.html)
SendGrid,亚马逊简单电子邮件服务(SES)等