protected override void Write(LogEventInfo logEvent) { try { // don't report non-critical events without exceptions if (logEvent.Exception == null || _unauthorized) { return; } var fingerPrint = GetFingerPrint(logEvent); if (!_debounce.Allowed(fingerPrint)) { return; } var extras = logEvent.Properties.ToDictionary(x => x.Key.ToString(), x => x.Value.ToString()); _client.Logger = logEvent.LoggerName; var sentryMessage = new SentryMessage(logEvent.Message, logEvent.Parameters); var sentryEvent = new SentryEvent(logEvent.Exception) { Level = LoggingLevelMap[logEvent.Level], Message = sentryMessage, Extra = extras, Fingerprint = { logEvent.Level.ToString(), logEvent.LoggerName, logEvent.Message } }; if (logEvent.Exception != null) { sentryEvent.Fingerprint.Add(logEvent.Exception.GetType().FullName); } var osName = Environment.GetEnvironmentVariable("OS_NAME"); var osVersion = Environment.GetEnvironmentVariable("OS_VERSION"); var runTimeVersion = Environment.GetEnvironmentVariable("RUNTIME_VERSION"); sentryEvent.Tags.Add("os_name", osName); sentryEvent.Tags.Add("os_version", $"{osName} {osVersion}"); sentryEvent.Tags.Add("runtime_version", $"{PlatformInfo.PlatformName} {runTimeVersion}"); _client.Capture(sentryEvent); } catch (Exception e) { OnError(e); } }
protected override void Write(LogEventInfo logEvent) { if (_unauthorized || !SentryEnabled) { return; } try { SentrySdk.AddBreadcrumb(logEvent.FormattedMessage, logEvent.LoggerName, level: BreadcrumbLevelMap[logEvent.Level]); // don't report non-critical events without exceptions if (!IsSentryMessage(logEvent)) { return; } var fingerPrint = GetFingerPrint(logEvent); if (!_debounce.Allowed(fingerPrint)) { return; } var extras = logEvent.Properties.ToDictionary(x => x.Key.ToString(), x => (object)x.Value.ToString()); extras.Remove("Sentry"); if (logEvent.Exception != null) { foreach (DictionaryEntry data in logEvent.Exception.Data) { extras.Add(data.Key.ToString(), data.Value.ToString()); } } var sentryEvent = new SentryEvent(logEvent.Exception) { Level = LoggingLevelMap[logEvent.Level], Logger = logEvent.LoggerName, Message = logEvent.FormattedMessage }; sentryEvent.SetExtras(extras); sentryEvent.SetFingerprint(fingerPrint); SentrySdk.CaptureEvent(sentryEvent); } catch (Exception e) { OnError(e); } }
protected override void Write(LogEventInfo logEvent) { if (_unauthorized) { return; } try { _client.AddTrail(new Breadcrumb(logEvent.LoggerName) { Level = BreadcrumbLevelMap[logEvent.Level], Message = logEvent.FormattedMessage }); // don't report non-critical events without exceptions if (!IsSentryMessage(logEvent)) { return; } var fingerPrint = GetFingerPrint(logEvent); if (!_debounce.Allowed(fingerPrint)) { return; } var extras = logEvent.Properties.ToDictionary(x => x.Key.ToString(), x => x.Value.ToString()); extras.Remove("Sentry"); _client.Logger = logEvent.LoggerName; if (logEvent.Exception != null) { foreach (DictionaryEntry data in logEvent.Exception.Data) { extras.Add(data.Key.ToString(), data.Value.ToString()); } } var sentryMessage = new SentryMessage(logEvent.Message, logEvent.Parameters); var sentryEvent = new SentryEvent(logEvent.Exception) { Level = LoggingLevelMap[logEvent.Level], Message = sentryMessage, Extra = extras, Fingerprint = { logEvent.Level.ToString(), logEvent.LoggerName, logEvent.Message } }; if (logEvent.Exception != null) { sentryEvent.Fingerprint.Add(logEvent.Exception.GetType().FullName); } if (logEvent.Properties.ContainsKey("Sentry")) { sentryEvent.Fingerprint.Clear(); Array.ForEach((string[])logEvent.Properties["Sentry"], sentryEvent.Fingerprint.Add); } var runTimeVersion = Environment.GetEnvironmentVariable("RUNTIME_VERSION"); sentryEvent.Tags.Add("runtime_version", $"{PlatformInfo.PlatformName} {runTimeVersion}"); _client.Capture(sentryEvent); } catch (Exception e) { OnError(e); } }