在Azure中的ASP.NET Web应用程序-如何记录错误?

23

我有一个部署到Azure的Web应用程序,但我不知道如何记录错误。

为了测试目的,我有这个ForceError方法:

public string ForceError()
{
    throw new Exception("just a test exception");
    return "ok";
}

导致这样错误的原因是: 在此输入图片描述

在Azure上,我启用了所有诊断日志,如下所示: 在此输入图片描述

但我强制引发的错误没有出现在选定的存储容器中。

您知道我应该做什么来开始记录应用程序中的所有错误吗?


我认为自你写下这个问题以来,日志记录领域发生了很多事情。 Application Insights 仍然是一种可能性。现在有很多支持 Azure 的云日志平台,例如 elmah.ioStackifySentry。此外,现在任何有同样问题的人都应该考虑使用诸如 SerilogMicrosoft.Extensions.Logging 等日志框架。 - ThomasArdal
2个回答

35
我很抱歉,仅仅抛出异常在 Azure Web 应用程序日志记录中无法工作。
ASP.NET 应用程序可以使用 System.Diagnostics.Trace 类将信息记录到应用程序诊断日志中。下面示例中的四个方法对应于诊断日志级别:
Trace.TraceError("Message"); // Write an error message   
Trace.TraceWarning("Message"); // Write a warning message
Trace.TraceInformation("Message"); // Write an information message
Trace.WriteLine("Message"); // Write a verbose message

enter image description here

除了记录事件的基本信息外,Blob存储还会在CSV中记录实例ID、线程ID和更精细的时间戳(滴答格式)等其他信息。

enter image description here

这里有一篇关于日志记录技巧和工具的优秀文章here

还可以参考官方Azure Web Apps Logging Document


11
在Azure网站上,记录日志的最佳方式是使用应用程序洞察,您可以使用免费版本来获取有关崩溃/速度/性能的信息。
然而,如果您启用了所有内容,则应用程序洞察会稍微变慢。但是,如果您自定义并仅启用错误日志记录,则它将把所有日志推送到您的Azure应用程序洞察帐户中,您将能够很好地监视/分析它。
更多详细信息请参见: https://azure.microsoft.com/en-in/documentation/articles/app-insights-api-custom-events-metrics/ 我建议不要自动配置应用程序洞察,而要采用空项目,设置应用程序洞察。注意所有添加的配置文件和NuGet包。除了应用密钥/签名之外,还有一些洞察配置文件,您可以关闭所有内容。
只有在需要手动跟踪异常时,才可以创建TelemetryClient并调用TrackException方法。如果需要,您可以传递更多详细信息。

嗨,这似乎是我正在寻找的东西。您能详细说明如何使用应用程序洞察进行“错误级别”日志记录并/或提供参考资料吗? - nest
1
只是补充一下,如果像我一样使用mvc框架,这篇文章详细介绍了如何实现。https://azure.microsoft.com/en-us/documentation/articles/app-insights-asp-net-exceptions/#mvc - nest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接