private void HandleRequestStartEvent(MediatrEventData @event) { try { var transaction = _apmAgent.Tracer.CurrentTransaction; var currentExecutionSegment = _apmAgent.Tracer.CurrentSpan ?? (IExecutionSegment)transaction; var span = currentExecutionSegment.StartSpan( @event.RequestType.Name, "MediatR", @event.RequestSubType); if (!_processingQueries.TryAdd(@event.RequestGuid, span)) { return; } span.Action = @event.RequestSubType == "Query" ? ApiConstants.ActionQuery : ApiConstants.ActionExec; span.Context.Db = new Database { Statement = @event.Payload, Type = "MediatR" }; } catch (Exception e) { //ignore _apmLogger.Log(LogLevel.Error, "Exception was thrown while handling 'request started event''", e, null); } }
private void HandleRequestCompletedEvent(MediatrEventData @event) { try { if (!_processingQueries.TryRemove(@event.RequestGuid, out var span)) { return; } span.Duration = @event.TotalMilliseconds; span.End(); } catch (Exception ex) { // ignore _apmLogger.Log(LogLevel.Error, "Exception was thrown while handling 'request succeeded event''", ex, null); } }