/// <inheritdoc /> protected override void OnError(EventWrittenEventArgs eventData) { var level = eventData.Level; if (level == EventLevel.Error) { long keywords = (long)eventData.Keywords; string eventName = eventData.EventName; string eventMessage = FormattingEventListener.CreateFullMessageString(eventData, "error", eventData.Message, m_baseTime, useCustomPipDescription: false); // Errors replayed from workers should respect their original event name and keywords if (eventData.EventId == (int)SharedLogEventId.DistributionWorkerForwardedError) { eventMessage = (string)eventData.Payload[0]; eventName = (string)eventData.Payload[2]; keywords = (long)eventData.Payload[3]; } BucketError(keywords, eventName, eventMessage); } else { // OnError() called for an EventLevel other than error?!? How can this be? It is possible for the // WarningMapper to upconvert a lower priority event to an error Contract.Assert((level == EventLevel.Warning) || (level == EventLevel.Informational) || (level == EventLevel.Verbose)); string eventMessage = FormattingEventListener.CreateFullMessageString(eventData, "error", eventData.Message, DateTime.Now, useCustomPipDescription: false); // The configuration promoted a warning to an error. That's a user error UserErrorDetails.RegisterError(eventData.EventName, eventMessage); } }
/// <inheritdoc /> protected override void OnCritical(EventWrittenEventArgs eventData) { Contract.Assume(eventData.Level == EventLevel.Critical); long keywords = (long)eventData.Keywords; string eventName = eventData.EventName; string eventMessage = FormattingEventListener.CreateFullMessageString(eventData, "error", eventData.Message, m_baseTime, useCustomPipDescription: false); BucketError(keywords, eventName, eventMessage); Interlocked.Increment(ref m_numCriticals); }