public void RaiseAlert(ApplicationAlertKind kind, params object[] details) { BeginLogging(); ExpireDups(); var jsonDetail = JsonConvert.SerializeObject(details); var alert = new NodeAlert { Id = Guid.NewGuid().ToString(), ComponentOrigin = _reg.ComponentType, Detail = jsonDetail, EventTime = DateTime.UtcNow, Handled = false, Kind = kind }; var hash = AlertHash(alert); if (!_duplicateTracking.ContainsKey(hash)) { _duplicateTracking.TryAdd(hash, DateTime.UtcNow); _alerts.Enqueue(alert); _log.ErrorFormat("Application alert: {0}", jsonDetail); System.Diagnostics.Debug.WriteLine(jsonDetail); } else { _log.DebugFormat("app alert {0} is duplicate, discarding", hash); } }
public static int AlertHash(NodeAlert item) { return(Hash.GetCombinedHashCodeForHashes(item.Detail.GetHashCode(), item.Kind.GetHashCode())); }