@Override public void exceptionThrown(Exception e, int stackSize) { ThreadData localData = threadDataThreadLocal.get(); MethodData methodData = null; try { if (localData.methods != null && !localData.methods.isEmpty()) { for (MethodData m : localData.methods) { if (EXCEPTION_THROWN_ID.equals(m.name)) { return; } } } methodData = new MethodData(); methodData.interval = 0; methodData.type = InstrumentedClassType.OTHER.toString(); methodData.arguments = null; methodData.name = EXCEPTION_THROWN_ID; localData.methods.addFirst(methodData); ExceptionTelemetry et = new ExceptionTelemetry(e, stackSize); telemetryClient.track(et); } catch (ThreadDeath td) { throw td; } catch (Throwable t) { } if (methodData != null) { localData.methods.remove(methodData); } }
@Test public void testExceptions() { Exception exception = new IOException("mocka", new IllegalArgumentException("mockb")); ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(exception); assertThat(exceptionTelemetry.getExceptions(), hasSize(2)); }
private void sendHTTPTelemetry(MethodData methodData, Throwable throwable) { if (methodData.arguments != null && methodData.arguments.length == 1) { String url = methodData.arguments[0].toString(); long durationInMilliSeconds = nanoToMilliseconds(methodData.interval); Duration duration = new Duration(durationInMilliSeconds); InternalLogger.INSTANCE.trace("Sending HTTP RDD event, URL: '%s', duration=%s ms", url, durationInMilliSeconds); RemoteDependencyTelemetry telemetry = new RemoteDependencyTelemetry(url, null, duration, throwable == null); telemetry.setDependencyKind(DependencyKind.Http); Date dependencyStartDate = new Date(System.currentTimeMillis() - durationInMilliSeconds); telemetry.setTimestamp(dependencyStartDate); telemetryClient.trackDependency(telemetry); if (throwable != null) { ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(throwable); telemetryClient.track(exceptionTelemetry); } } }
@Test public void testTrackExceptionWithExceptionTelemetry() { ExceptionTelemetry telemetry = new ExceptionTelemetry(new Exception("Exception")); client.trackException(telemetry); verifyAndGetLastEventSent(); }
@Test public void testFirstValueIsNull() { ExceptionTelemetry telemetry = new ExceptionTelemetry(new IllegalArgumentException("mockb")); assertNull(telemetry.getSeverityLevel()); }
private static void testSeverityLevel(SeverityLevel severityLevel) { ExceptionTelemetry telemetry = new ExceptionTelemetry(new IllegalArgumentException("mockb")); telemetry.setSeverityLevel(severityLevel); assertEquals(telemetry.getSeverityLevel(), severityLevel); } }
private void sendInstrumentationTelemetry(MethodData methodData, Throwable throwable) { long durationInMilliSeconds = nanoToMilliseconds(methodData.interval); RemoteDependencyTelemetry telemetry = new RemoteDependencyTelemetry(methodData.name, null, new Duration(durationInMilliSeconds), throwable == null); telemetry.setType(methodData.type); Date dependencyStartDate = new Date(System.currentTimeMillis() - durationInMilliSeconds); telemetry.setTimestamp(dependencyStartDate); InternalLogger.INSTANCE.trace("Sending RDD event for '%s'", methodData.name); telemetryClient.track(telemetry); if (throwable != null) { ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(throwable); telemetryClient.track(exceptionTelemetry); } }
@Test public void testSetException() { NullPointerException exception = new NullPointerException("mock"); ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(exception); NullPointerException exception1 = new NullPointerException("mock"); exceptionTelemetry.setException(exception1); assertSame(exception1, exceptionTelemetry.getException()); }
@Override public void methodFinished(String classAndMethodNames, long deltaInNS, Object[] args, Throwable throwable) { long durationInMS = nanoToMilliseconds(deltaInNS); Duration duration = new Duration(durationInMS); Date dependencyStartTime = new Date(System.currentTimeMillis() - durationInMS); RemoteDependencyTelemetry telemetry = new RemoteDependencyTelemetry(classAndMethodNames, null, duration, throwable == null); telemetry.setTimestamp(dependencyStartTime); telemetry.setDependencyKind(DependencyKind.Other); if (args != null) { String argsAsString = new ArgsFormatter().format(args); telemetry.getContext().getProperties().put("Args", argsAsString); } InternalLogger.INSTANCE.trace("Sending RDD event for '%s', duration=%s ms", classAndMethodNames, durationInMS); telemetryClient.track(telemetry); if (throwable != null) { ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(throwable); telemetryClient.track(exceptionTelemetry); } }
if (throwable != null) { InternalLogger.INSTANCE.trace("Sending Sql exception"); ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(throwable); telemetryClient.track(exceptionTelemetry);
/** * Sends an exception record to Application Insights. Appears in "exceptions" in Analytics and Search. * @param exception The exception to log information about. * @param properties Named string values you can use to search and classify trace messages. * @param metrics Measurements associated with this exception event. Appear in "custom metrics" in Metrics Explorer. */ public void trackException(Exception exception, Map<String, String> properties, Map<String, Double> metrics) { if (isDisabled()) { return; } ExceptionTelemetry et = new ExceptionTelemetry(exception); MapUtil.copy(properties, et.getContext().getProperties()); MapUtil.copy(metrics, et.getMetrics()); this.track(et); }
@Test public void testCtor() { NullPointerException exception = new NullPointerException("mock"); ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(exception); assertSame(exception, exceptionTelemetry.getException()); assertTrue(exceptionTelemetry.getProperties().isEmpty()); assertTrue(exceptionTelemetry.getMetrics().isEmpty()); assertThat(exceptionTelemetry.getExceptions(), hasSize(1)); }
@Test public void testGetThrowableOnException() { IOException exception = new IOException("mock"); ExceptionTelemetry telemetry = new ExceptionTelemetry(exception); assertSame(exception, telemetry.getThrowable()); assertSame(exception, telemetry.getException()); }
@Test public void testError() { Error error = new NoSuchMethodError("Method"); ExceptionTelemetry telemetry = new ExceptionTelemetry(error); assertNull(telemetry.getException()); assertSame(error, telemetry.getThrowable()); }
/** * Sends the given event to AI. * * @param event The event to send. */ public void sendEvent(ApplicationInsightsEvent event) { String formattedMessage = event.getMessage(); Map<String, String> customParameters = event.getCustomParameters(); Telemetry telemetry; if (event.isException()) { ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(event.getException()); exceptionTelemetry.setSeverityLevel(event.getNormalizedSeverityLevel()); telemetry = exceptionTelemetry; } else { TraceTelemetry traceTelemetry = new TraceTelemetry(formattedMessage); traceTelemetry.setSeverityLevel(event.getNormalizedSeverityLevel()); telemetry = traceTelemetry; } telemetry.getContext().getProperties().putAll(customParameters); telemetryClient.track(telemetry); }
/** * Sends the given event to AI. * * @param event The event to send. */ public void sendEvent(ApplicationInsightsEvent event) { String formattedMessage = event.getMessage(); Map<String, String> customParameters = event.getCustomParameters(); Telemetry telemetry; if (event.isException()) { ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(event.getException()); exceptionTelemetry.setSeverityLevel(event.getNormalizedSeverityLevel()); telemetry = exceptionTelemetry; } else { TraceTelemetry traceTelemetry = new TraceTelemetry(formattedMessage); traceTelemetry.setSeverityLevel(event.getNormalizedSeverityLevel()); telemetry = traceTelemetry; } telemetry.getContext().getProperties().putAll(customParameters); telemetryClient.track(telemetry); }
/** * Sends the given event to AI. * * @param event The event to send. */ public void sendEvent(ApplicationInsightsEvent event) { String formattedMessage = event.getMessage(); Map<String, String> customParameters = event.getCustomParameters(); Telemetry telemetry; if (event.isException()) { ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(event.getException()); exceptionTelemetry.setSeverityLevel(event.getNormalizedSeverityLevel()); telemetry = exceptionTelemetry; } else { TraceTelemetry traceTelemetry = new TraceTelemetry(formattedMessage); traceTelemetry.setSeverityLevel(event.getNormalizedSeverityLevel()); telemetry = traceTelemetry; } telemetry.getContext().getProperties().putAll(customParameters); telemetryClient.track(telemetry); }
/** * Sends the given event to AI. * * @param event The event to send. */ public void sendEvent(ApplicationInsightsEvent event) { String formattedMessage = event.getMessage(); Map<String, String> customParameters = event.getCustomParameters(); Telemetry telemetry; if (event.isException()) { ExceptionTelemetry exceptionTelemetry = new ExceptionTelemetry(event.getException()); exceptionTelemetry.setSeverityLevel(event.getNormalizedSeverityLevel()); telemetry = exceptionTelemetry; } else { TraceTelemetry traceTelemetry = new TraceTelemetry(formattedMessage); traceTelemetry.setSeverityLevel(event.getNormalizedSeverityLevel()); telemetry = traceTelemetry; } telemetry.getContext().getProperties().putAll(customParameters); telemetryClient.track(telemetry); }
@Test public void telemetryBuilderWithStandardFieldsMinimalFields() { String ikey = "123"; for (BaseTelemetry<?> bt : new BaseTelemetry[] { new MetricTelemetry(), new TraceTelemetry(), new ExceptionTelemetry(new RuntimeException("fake")), new RemoteDependencyTelemetry(), new EventTelemetry(), new PageViewTelemetry(), new RequestTelemetry(), new PerformanceCounterTelemetry() }) { String envelopeName = bt instanceof PerformanceCounterTelemetry ? MetricTelemetry.ENVELOPE_NAME : bt.getEnvelopName(); bt.getContext().setInstrumentationKey(ikey); final Date date = new Date(); bt.setTimestamp(date); assertEquals(Telemetry.newBuilder() .setDateTime(LocalStringsUtils.getDateFormatter().format(date)) .setVer(LocalForwarderModelTransformer.CURRENT_ENVELOPE_VERSION) .setInstrumentationKey(ikey) .setDataTypeName(String.format("Microsoft.ApplicationInsights.%s.%s", ikey, envelopeName)).buildPartial(), LocalForwarderModelTransformer.telemetryBuilderWithStandardFields(bt).buildPartial()); } }
new MetricTelemetry(), new TraceTelemetry(), new ExceptionTelemetry(new RuntimeException("fake")), new RemoteDependencyTelemetry(), new EventTelemetry(),