public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { RavenLogLevel logLevel = (RavenLogLevel)value; switch (logLevel) { case RavenLogLevel.Debug: writer.WriteValue("debug"); break; case RavenLogLevel.Info: writer.WriteValue("info"); break; case RavenLogLevel.Warning: writer.WriteValue("warning"); break; case RavenLogLevel.Error: writer.WriteValue("error"); break; case RavenLogLevel.Fatal: writer.WriteValue("fatal"); break; } }
internal async Task <RavenPayload> GeneratePayloadAsync(string message, RavenLogLevel level, IDictionary <string, string> tags, IDictionary <string, object> extra) { RavenPayload payload = await GetBasePayloadAsync(level, tags, extra); payload.Message = message; return(payload); }
internal async Task <RavenPayload> GeneratePayloadAsync(string message, RavenLogLevel level, IDictionary <string, string> tags, IDictionary <string, object> extra, string[] fingerprint) { RavenPayload payload = await GetBasePayloadAsync(level, tags, extra, fingerprint).ConfigureAwait(false); payload.Message = message; return(payload); }
internal async Task ProcessExceptionAsync(Exception ex, RavenLogLevel level, IDictionary <string, string> tags, IDictionary <string, object> extra, bool forceSend) { RavenPayload payload = await GeneratePayloadAsync(ex, level, tags, extra); if (forceSend) { await SendPayloadAsync(payload); } else { await StorePayloadAsync(payload); } }
internal async Task ProcessMessageAsync(string message, RavenLogLevel level, IDictionary <string, string> tags, IDictionary <string, object> extra, string[] fingerprint, bool forceSend) { RavenPayload payload = await GeneratePayloadAsync(message, level, tags, extra, fingerprint); if (forceSend) { await SendPayloadAsync(payload).ConfigureAwait(false); } else { await StorePayloadAsync(payload).ConfigureAwait(false); } }
private async Task <RavenPayload> GetBasePayloadAsync(RavenLogLevel level, IDictionary <string, string> tags, IDictionary <string, object> extra) { RavenPayload payload = new RavenPayload() { EventID = Guid.NewGuid().ToString("n"), Project = Dsn.ProjectID, Level = level, Timestamp = DateTime.UtcNow, Platform = _platform.PlatformTag, Logger = String.IsNullOrEmpty(Logger) ? "root" : Logger, User = _user, Tags = await SetDefaultTagsAsync(tags), Extra = SetDefaultExtra(extra) }; return(payload); }
internal async Task <RavenPayload> GeneratePayloadAsync(Exception ex, RavenLogLevel level, IDictionary <string, string> tags, IDictionary <string, object> extra) { string exceptionName = ex.GetBaseException().GetType().FullName; string exceptionMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message; RavenPayload payload = await GetBasePayloadAsync(level, tags, extra); payload.Message = String.Format("{0}: {1}", exceptionName, exceptionMessage); payload.Exceptions = ex.EnumerateAllExceptions().ToList(); payload.Stacktrace = payload.Exceptions?.LastOrDefault()?.Stacktrace; var lastFrame = payload.Stacktrace?.Frames?.LastOrDefault(); if (lastFrame != null) { payload.Culprit = String.Format("{0} in {1}", lastFrame.Method, lastFrame.Filename); } return(payload); }
/// <summary> /// Captures an exception. /// </summary> /// <param name="ex">The <see cref="System.Exception"/> to capture.</param> /// <param name="forceSend">Whether to send the request immediately upon capture.</param> /// <param name="level">The level this exception should be logged at.</param> /// <param name="tags">Any additional tags to be sent with this exception.</param> /// <param name="extra">Any additional extra data to be sent with this exception.</param> public void CaptureExceptionAsync(Exception ex, bool forceSend = false, RavenLogLevel level = RavenLogLevel.Error, IDictionary <string, string> tags = null, IDictionary <string, object> extra = null) { ProcessExceptionAsync(ex, level, tags, extra, forceSend).ContinueWith(t => HandleInternalException(t.Exception), TaskContinuationOptions.OnlyOnFaulted); }
private async Task<RavenPayload> GetBasePayloadAsync(RavenLogLevel level, IDictionary<string, string> tags, IDictionary<string, object> extra) { RavenPayload payload = new RavenPayload() { EventID = Guid.NewGuid().ToString("n"), Project = Dsn.ProjectID, Level = level, Timestamp = DateTime.UtcNow, Platform = _platform.PlatformTag, Logger = String.IsNullOrEmpty(Logger) ? "root" : Logger, User = _user, Tags = await SetDefaultTagsAsync(tags), Extra = SetDefaultExtra(extra) }; return payload; }
internal async Task<RavenPayload> GeneratePayloadAsync(Exception ex, RavenLogLevel level, IDictionary<string, string> tags, IDictionary<string, object> extra) { string exceptionName = ex.GetBaseException().GetType().FullName; string exceptionMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message; RavenPayload payload = await GetBasePayloadAsync(level, tags, extra); payload.Message = String.Format("{0}: {1}", exceptionName, exceptionMessage); payload.Exceptions = ex.EnumerateAllExceptions().ToList(); payload.Stacktrace = payload.Exceptions?.LastOrDefault()?.Stacktrace; var lastFrame = payload.Stacktrace?.Frames?.LastOrDefault(); if (lastFrame != null) payload.Culprit = String.Format("{0} in {1}", lastFrame.Method, lastFrame.Filename); return payload; }
internal async Task<RavenPayload> GeneratePayloadAsync(string message, RavenLogLevel level, IDictionary<string, string> tags, IDictionary<string, object> extra) { RavenPayload payload = await GetBasePayloadAsync(level, tags, extra); payload.Message = message; return payload; }
internal async Task ProcessExceptionAsync(Exception ex, RavenLogLevel level, IDictionary<string, string> tags, IDictionary<string, object> extra, bool forceSend) { RavenPayload payload = await GeneratePayloadAsync(ex, level, tags, extra); if (forceSend) await SendPayloadAsync(payload); else await StorePayloadAsync(payload); }
/// <summary> /// Captures an exception. /// </summary> /// <param name="ex">The <see cref="System.Exception"/> to capture.</param> /// <param name="forceSend">Whether to send the request immediately upon capture.</param> /// <param name="level">The level this exception should be logged at.</param> /// <param name="tags">Any additional tags to be sent with this exception.</param> /// <param name="extra">Any additional extra data to be sent with this exception.</param> public void CaptureExceptionAsync(Exception ex, bool forceSend = false, RavenLogLevel level = RavenLogLevel.Error, IDictionary<string, string> tags = null, IDictionary<string, object> extra = null) { ProcessExceptionAsync(ex, level, tags, extra, forceSend).ContinueWith(t => HandleInternalException(t.Exception), TaskContinuationOptions.OnlyOnFaulted); }
/// <summary> /// Captures an exception. /// </summary> /// <param name="ex">The <see cref="System.Exception"/> to capture.</param> /// <param name="forceSend">Whether to send the request immediately upon capture.</param> /// <param name="level">The level this exception should be logged at.</param> /// <param name="tags">Any additional tags to be sent with this exception.</param> /// <param name="extra">Any additional extra data to be sent with this exception.</param> public async Task CaptureExceptionAsync(Exception ex, bool forceSend = false, RavenLogLevel level = RavenLogLevel.Error, IDictionary <string, string> tags = null, IDictionary <string, object> extra = null) { try { await ProcessExceptionAsync(ex, level, tags, extra, forceSend).ConfigureAwait(false); } catch (Exception e) { HandleInternalException(e); } }
/// <summary> /// Captures a message. /// </summary> /// <param name="message">The message text to be logged.</param> /// <param name="forceSend">Whether to send the request immediately upon capture.</param> /// <param name="level">The level this message should be logged at.</param> /// <param name="tags">Any additional tags to be sent with this message.</param> /// <param name="extra">Any additional extra data to be sent with this message.</param> /// <param name="fingerprint">Any additional fingerprint to be sent with this message.</param> public async Task CaptureMessageAsync(string message, bool forceSend = false, RavenLogLevel level = RavenLogLevel.Info, IDictionary <string, string> tags = null, IDictionary <string, object> extra = null, string[] fingerprint = null) { try { await ProcessMessageAsync(message, level, tags, extra, fingerprint, forceSend).ConfigureAwait(false); } catch (Exception e) { HandleInternalException(e); } }