/// <summary> /// Initializes a new instance of the <see cref="RollbarEventArgs"/> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="dataObject">The data object.</param> internal RollbarEventArgs( RollbarLogger logger, object dataObject ) { this._logger = logger; this.Payload = string.Empty; if (dataObject != null) { string payloadString = dataObject as string; if (payloadString != null) { this.Payload = payloadString; } else { try { this.Payload = JsonConvert.SerializeObject(dataObject); } catch (Exception ex) { Trace.WriteLine(ex, $"{nameof(RollbarEventArgs)}.{nameof(this.Payload)}"); } } } }
/// <summary> /// Initializes a new instance of the <see cref="RollbarEventArgs"/> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="dataObject">The data object.</param> internal RollbarEventArgs( RollbarLogger logger, object dataObject ) { this._logger = logger; this.Payload = string.Empty; if (dataObject != null) { string payloadString = dataObject as string; if (payloadString != null) { this.Payload = payloadString; } else { try { this.Payload = JsonConvert.SerializeObject(dataObject); } catch (Exception ex) { traceSource.TraceEvent( TraceEventType.Critical, 0, $"Exception while serializing payload:{Environment.NewLine}{ex}" ); } } } }
public RollbarLoggerBlockingWrapper(RollbarLogger asyncLogger, TimeSpan timeout) { Assumption.AssertNotNull(asyncLogger, nameof(asyncLogger)); this._asyncLogger = asyncLogger; this._timeout = timeout; }
/// <summary> /// Initializes a new instance of the <see cref="PayloadBundle" /> class. /// </summary> /// <param name="rollbarLogger">The rollbar logger.</param> /// <param name="payloadObject">The payload object.</param> /// <param name="level">The level.</param> public PayloadBundle( RollbarLogger rollbarLogger, object payloadObject, ErrorLevel level ) : this(rollbarLogger, payloadObject, level, null, null, null) { }
public PayloadQueue(RollbarLogger logger) { Assumption.AssertNotNull(logger, nameof(logger)); this._logger = logger; this._syncLock = new object(); this._queue = new Queue <Payload>(); }
/// <summary> /// Initializes a new instance of the <see cref="PayloadBundle" /> class. /// </summary> /// <param name="rollbarLogger">The rollbar logger.</param> /// <param name="payloadPackage">The payload package.</param> /// <param name="level">The level.</param> public PayloadBundle( RollbarLogger rollbarLogger, IRollbarPackage payloadPackage, ErrorLevel level ) : this(rollbarLogger, payloadPackage, level, null, null, null) { }
/// <summary> /// Initializes a new instance of the <see cref="PayloadBundle" /> class. /// </summary> /// <param name="rollbarLogger">The rollbar logger.</param> /// <param name="payloadObject">The payload object.</param> /// <param name="level">The level.</param> /// <param name="custom">The custom.</param> public PayloadBundle( RollbarLogger rollbarLogger, object payloadObject, ErrorLevel level, IDictionary <string, object> custom ) : this(rollbarLogger, payloadObject, level, custom, null, null) { }
internal RollbarConfig(RollbarLogger logger) { this._logger = logger; this.SetDefaults(); // initialize based on application configuration file (if any): NetStandard.RollbarConfigUtility.Load(this); }
/// <summary> /// Initializes a new instance of the <see cref="RollbarClient" /> class. /// </summary> /// <param name="rollbarLogger">The rollbar logger.</param> public RollbarClient(RollbarLogger rollbarLogger) : this(rollbarLogger.Config) { Assumption.AssertNotNull(rollbarLogger, nameof(rollbarLogger)); this._rollbarLogger = rollbarLogger; this._payloadTruncationStrategy = new IterativeTruncationStrategy(); this._payloadScrubber = new RollbarPayloadScrubber(this._rollbarLogger.Config.GetFieldsToScrub()); }
/// <summary> /// Initializes a new instance of the <see cref="PayloadBundle" /> class. /// </summary> /// <param name="rollbarLogger">The rollbar logger.</param> /// <param name="payloadObject">The payload object.</param> /// <param name="level">The level.</param> /// <param name="timeoutAt">The timeout at.</param> /// <param name="signal">The signal.</param> public PayloadBundle( RollbarLogger rollbarLogger, object payloadObject, ErrorLevel level, DateTime?timeoutAt, SemaphoreSlim signal ) : this(rollbarLogger, payloadObject, level, null, timeoutAt, signal) { }
/// <summary> /// Initializes a new instance of the <see cref="PayloadBundle" /> class. /// </summary> /// <param name="rollbarLogger">The rollbar logger.</param> /// <param name="payloadPackage">The payload package.</param> /// <param name="level">The level.</param> /// <param name="timeoutAt">The timeout at.</param> /// <param name="signal">The signal.</param> public PayloadBundle( RollbarLogger rollbarLogger, IRollbarPackage payloadPackage, ErrorLevel level, DateTime?timeoutAt, SemaphoreSlim signal ) : this(rollbarLogger, payloadPackage, level, null, timeoutAt, signal) { }
/// <summary> /// Initializes a new instance of the <see cref="CommunicationErrorEventArgs"/> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="payload">The payload.</param> /// <param name="error">The error.</param> /// <param name="retriesLeft">The retries left.</param> internal CommunicationErrorEventArgs( RollbarLogger logger, Payload payload, System.Exception error, int retriesLeft ) : base(logger, payload) { this.Error = error; this.RetriesLeft = retriesLeft; }
internal InternalErrorEventArgs( RollbarLogger logger, Payload payload, System.Exception error, string details ) : base(logger, payload) { this.Error = error; this.Details = details; }
internal RollbarConfig(RollbarLogger logger) { this._logger = logger; this.SetDefaults(); // initialize based on application configuration file (if any): var configLoader = new RollbarConfigurationLoader(); configLoader.Load(this); }
internal InternalErrorEventArgs( RollbarLogger logger, object dataObject, Exception error, string details ) : base(logger, dataObject) { this.Error = error; this.Details = details; }
internal RollbarEventArgs( RollbarLogger logger, object dataObject ) { this._logger = logger; if (dataObject != null) { this.Payload = JsonConvert.SerializeObject(dataObject); } }
public PayloadQueue(RollbarLogger logger, RollbarClient client) { Assumption.AssertNotNull(logger, nameof(logger)); Assumption.AssertNotNull(client, nameof(client)); Assumption.AssertTrue(object.ReferenceEquals(logger.Config, client.Config), nameof(client.Config)); this._logger = logger; this._syncLock = new object(); this._queue = new Queue <Payload>(); this._client = client; }
internal RollbarEventArgs( RollbarLogger logger, Payload payload ) { Assumption.AssertNotNull(logger, nameof(logger)); this._logger = logger; if (payload != null) { this.Payload = JsonConvert.SerializeObject(payload); } }
private RollbarResponse Process(Payload payload, RollbarLogger logger) { var client = new RollbarClient(logger.Config); IEnumerable <string> safeScrubFields = logger.Config.GetSafeScrubFields(); RollbarResponse response = null; int retries = 3; while (retries > 0) { try { response = client.PostAsJson(payload, safeScrubFields); } catch (WebException ex) { retries--; this.OnRollbarEvent( new CommunicationErrorEventArgs(logger, payload, ex, retries) ); continue; } catch (ArgumentNullException ex) { retries = 0; this.OnRollbarEvent( new CommunicationErrorEventArgs(logger, payload, ex, retries) ); continue; } catch (System.Exception ex) { retries = 0; this.OnRollbarEvent( new CommunicationErrorEventArgs(logger, payload, ex, retries) ); continue; } retries = 0; } if (response != null) { this.OnRollbarEvent( new CommunicationEventArgs(logger, payload, response) ); } return(response); }
/// <summary> /// Initializes a new instance of the <see cref="PayloadBundle" /> class. /// </summary> /// <param name="rollbarLogger">The rollbar logger.</param> /// <param name="payloadPackage">The payload package.</param> /// <param name="level">The level.</param> /// <param name="custom">The custom.</param> /// <param name="timeoutAt">The timeout at.</param> /// <param name="signal">The signal.</param> public PayloadBundle( RollbarLogger rollbarLogger, IRollbarPackage payloadPackage, ErrorLevel level, IDictionary <string, object> custom, DateTime?timeoutAt, SemaphoreSlim signal ) : this(rollbarLogger, payloadPackage as object, level, custom, timeoutAt, signal) { if (payloadPackage != null) { IRollbarPackage package = ApplyCustomKeyValueDecorator(payloadPackage); this._rollbarPackage = package; } }
internal RollbarEventArgs( RollbarLogger logger, object dataObject ) { this._logger = logger; if (dataObject != null) { try { this.Payload = JsonConvert.SerializeObject(dataObject); } catch (Exception ex) { Trace.WriteLine(ex, $"{nameof(RollbarEventArgs)}.{nameof(this.Payload)}"); } } }
/// <summary> /// Initializes a new instance of the <see cref="PayloadBundle" /> class. /// </summary> /// <param name="rollbarLogger">The rollbar logger.</param> /// <param name="payloadObject">The payload object.</param> /// <param name="level">The level.</param> /// <param name="custom">The custom.</param> /// <param name="timeoutAt">The timeout at.</param> /// <param name="signal">The signal.</param> public PayloadBundle( RollbarLogger rollbarLogger, object payloadObject, ErrorLevel level, IDictionary <string, object> custom, DateTime?timeoutAt, SemaphoreSlim signal ) { Assumption.AssertNotNull(rollbarLogger, nameof(rollbarLogger)); Assumption.AssertNotNull(payloadObject, nameof(payloadObject)); this._rollbarLogger = rollbarLogger; this._payloadObject = payloadObject; this._level = level; this._custom = custom; this._timeoutAt = timeoutAt; this._signal = signal; }
/// <summary> /// Reports the specified rollbar logger. /// </summary> /// <param name="rollbarLogger">The rollbar logger.</param> /// <param name="dataObject">The data object.</param> /// <param name="rollbarError">The rollbar error.</param> /// <param name="message">The message.</param> /// <param name="exception">The exception.</param> public static void Report( RollbarLogger rollbarLogger, object dataObject, InternalRollbarError rollbarError, string message, Exception exception ) { var rollbarException = new RollbarException(rollbarError, message ?? rollbarError.ToString(), exception); var rollbarEvent = new InternalErrorEventArgs(rollbarLogger, dataObject, rollbarException, rollbarException.Message); if (rollbarLogger != null) { rollbarLogger.OnRollbarEvent(rollbarEvent); } else { RollbarQueueController.Instance.OnRollbarEvent(rollbarEvent); } }
/// <summary> /// Initializes a new instance of the <see cref="RollbarClient"/> class. /// </summary> /// <param name="rollbarLogger">The rollbar logger.</param> public RollbarClient(RollbarLogger rollbarLogger) { Assumption.AssertNotNull(rollbarLogger, nameof(rollbarLogger)); Assumption.AssertNotNull(rollbarLogger.Config, nameof(rollbarLogger.Config)); this._rollbarLogger = rollbarLogger; this._payloadPostUri = new Uri($"{this._rollbarLogger.Config.EndPoint}item/"); this._httpClient = RollbarQueueController.Instance.ProvideHttpClient( this._rollbarLogger.Config.ProxyAddress, this._rollbarLogger.Config.ProxyUsername, this._rollbarLogger.Config.ProxyPassword ); var header = new MediaTypeWithQualityHeaderValue("application/json"); if (!this._httpClient.DefaultRequestHeaders.Accept.Contains(header)) { this._httpClient.DefaultRequestHeaders.Accept.Add(header); } var sp = ServicePointManager.FindServicePoint(new Uri(this._rollbarLogger.Config.EndPoint)); try { sp.ConnectionLeaseTimeout = 60 * 1000; // 1 minute } #pragma warning disable CS0168 // Variable is declared but never used catch (NotImplementedException ex) #pragma warning restore CS0168 // Variable is declared but never used { // just a crash prevention. // this is a work around the unimplemented property within Mono runtime... } this._payloadTruncationStrategy = new IterativeTruncationStrategy(); }
/// <summary> /// Initializes a new instance of the <see cref="PayloadDropEventArgs"/> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="payload">The payload.</param> /// <param name="dropReason">The drop reason.</param> internal PayloadDropEventArgs(RollbarLogger logger, Payload payload, DropReason dropReason) : base(logger, payload) { this.Reason = dropReason; }
internal RollbarApiErrorEventArgs(RollbarLogger logger, Payload payload, RollbarResponse response) : base(logger, payload, response) { Assumption.AssertNotNull(response, nameof(response)); Assumption.AssertGreaterThan(response.Error, 0, nameof(response.Error)); }
internal CommunicationEventArgs(RollbarLogger logger, Payload payload, RollbarResponse response) : base(logger, payload) { this.Response = response; }
internal RollbarConfig(RollbarLogger logger) { this._logger = logger; }
/// <summary> /// Initializes a new instance of the <see cref="TransmissionOmittedEventArgs"/> class. /// </summary> /// <param name="logger">The logger.</param> /// <param name="payload">The payload.</param> internal TransmissionOmittedEventArgs(RollbarLogger logger, Payload payload) : base(logger, payload) { }
internal RollbarConfig(RollbarLogger logger) { this._logger = logger; this.SetDefaults(); }