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

ASP.NET web application in Azure - How to log errors?

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

出于测试目的,我有这个 ForceError 方法:

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

导致错误的原因如下:

在 Azure 上,我启用了所有诊断日志,如下所示:

但是我强制的错误并没有出现在选择的存储容器中。

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

恐怕仅抛出异常在 Azure Web 应用程序日志记录中不起作用。

ASP.NET 应用程序可以使用 System.Diagnostics.Trace class 将信息记录到应用程序诊断日志中。以下示例中的四种方法对应于诊断日志级别:

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

除了记录事件的基本信息外,blob 存储还会记录其他信息,例如实例 ID、线程 ID 和 CSV 格式的更精细的时间戳(刻度格式)。

一篇关于日志记录技巧和工具的好文章here

另见官方参考Azure Web Apps Logging Document

在 Azure 网站上,最好的记录方式是 Application Insights,您可以使用免费版本获取有关 crashes/speed/performance 的见解。

但是,如果启用所有功能,Application Insights 会稍微慢一些。但是,如果您自定义它并仅启用错误日志记录,它会将所有日志推送到您的 azure application insights 帐户,您将能够 monitor/analyze 它非常好。

更多详情: https://azure.microsoft.com/en-in/documentation/articles/app-insights-api-custom-events-metrics/

我建议不要自动配置 Application Insights,而是使用一个空项目来设置 Application Insights。注意所有添加的配置文件和 nuget 包。有一些洞察配置文件,除了应用程序key/signature,你可以关闭所有东西。

只有当您想手动跟踪异常时,才可以创建TelemetryClient 并调用TrackException 方法。如果需要,您可以传递更多详细信息。