仅应用洞察日志例外

时间:2018-10-18 14:48:25

标签: c# azure azure-application-insights

我想使用Application Insights仅记录异常。我该怎么办?

我尝试寻找关闭其他设置(例如this)的方法,但它说没有办法将其关闭。

我尝试使用ITelemetryProcessor并遇到与此question相同的问题。我尝试了配置和编码ITelemetryProcessor的方式,但是即使我在Web API控制器中明确抛出异常,也没有成功。

我正在使用VS 2017,并创建了一个新的.Net Framework 4.6.2 Web API。我也有一个InstrumentationKey,可以看到Azure门户中记录的异常。

1 个答案:

答案 0 :(得分:1)

首先,您引用的第一个link与您的问题无关。 您只想记录例外情况,但是link意味着删除旧的遥测数据,例如存储库中的Trace(上传到应用程序见解后存储遥测数据的存储位置)。

您可以使用ITelemetryProcessor仅记录异常。请按照以下步骤操作:

1。通过右键单击项目名称->选择Configure Application Insights,将Application Insights添加到您的Web api项目中: enter image description here

在添加SDK之后,请勿选择Enable trace collectionenter image description here

2。在您的项目中添加一个.cs文件,然后实现您的自定义ITelemetryProcessor类,代码如下:

using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;

namespace WebApplicationWebApi
{
    public class ExceptionsFilter:ITelemetryProcessor
    {
        private ITelemetryProcessor Next { get; set; }
        public ExceptionsFilter(ITelemetryProcessor next)
        {
            this.Next = next;
        }

        public void Process(ITelemetry item)
        {
            string s = item.GetType().Name;

            //if it's not exception telemetry, just return without log it to app insights.
            if (s != "ExceptionTelemetry")
            {
                return;
            }            

            this.Next.Process(item);
        }

    }
}

3。在ApplicationInsights.config中注册您的自定义ITelemetryProcessor。在节点中,添加<Add Type="WebApplicationWebApi.ExceptionsFilter,WebApplicationWebApi"/>enter image description here

4。然后运行您的代码。为了确保调用自定义ITelemetryProcessor类,您可以在该类中设置一个断点,以查看其在运行时是否被命中。

出于测试目的,我在HomeController.cs中添加了一些遥测数据:

public class HomeController : Controller
{
   TelemetryClient client = new TelemetryClient();
   public ActionResult Index()
   {
      RequestTelemetry r1 = new RequestTelemetry();
      r1.Name = "request message for testing";
      client.TrackRequest(r1);
      client.TrackTrace("trace message for testing wwwww.");
      client.TrackException(new Exception("exception message for testing wwwww."));
      ViewBag.Title = "Home Page";

      return View();
   }
}

5。在visual studio输出窗口中,您应该看到以下消息: enter image description here

6。然后在Visual Studio中,导航至Application Insights Search(在vs->视图->其他窗口-> Application Insights搜索中),然后检查此处是否有一些值(如果它具有“ 4”之类的值在下面的屏幕截图中,点击): enter image description here

7。如果在步骤6中具有值,请单击update button,然后选中Allenter image description here

8。然后您可以看到仅记录了异常: enter image description here