/// <summary> /// Configures the Rollbar singleton-like notifier. /// </summary> private static void ConfigureRollbar() { RollbarInfrastructureConfig rollbarInfrastructureConfig = new RollbarInfrastructureConfig( RollbarSamplesSettings.AccessToken, RollbarSamplesSettings.Environment ); RollbarDataSecurityOptions dataSecurityOptions = new RollbarDataSecurityOptions(); dataSecurityOptions.ScrubFields = new string[] { "access_token", // normally, you do not want scrub this specific field (it is operationally critical), but it just proves safety net built into the notifier... "username", }; rollbarInfrastructureConfig.RollbarLoggerConfig.RollbarDataSecurityOptions.Reconfigure(dataSecurityOptions); RollbarPayloadAdditionOptions payloadAdditionOptions = new RollbarPayloadAdditionOptions(); payloadAdditionOptions.Person = new Person("007") { Email = "*****@*****.**", UserName = "******" }; rollbarInfrastructureConfig.RollbarLoggerConfig.RollbarPayloadAdditionOptions.Reconfigure(payloadAdditionOptions); RollbarInfrastructure.Instance.Init(rollbarInfrastructureConfig); // optionally, if you would like to monitor this Rollbar instance's internal events within your application: RollbarInfrastructure.Instance.QueueController.InternalEvent += OnRollbarInternalEvent; }
public void TestGetSafeScrubFields() { var scrubFields = new string[] { "one", "two", "three", }; var scrubSafelistFields = new string[] { "two", }; var expectedSafeScrubFields = new string[] { "one", "three", }; var destinationOptions = new RollbarDestinationOptions(RollbarUnitTestSettings.AccessToken, RollbarUnitTestSettings.Environment); var dataSecurityOptions = new RollbarDataSecurityOptions(); dataSecurityOptions.ScrubFields = scrubFields; dataSecurityOptions.ScrubSafelistFields = scrubSafelistFields; var loggerConfig = new RollbarLoggerConfig(RollbarUnitTestSettings.AccessToken); loggerConfig.RollbarDestinationOptions.Reconfigure(destinationOptions); loggerConfig.RollbarDataSecurityOptions.Reconfigure(dataSecurityOptions); var result = loggerConfig.RollbarDataSecurityOptions.GetFieldsToScrub(); Assert.AreEqual(expectedSafeScrubFields.Length, result.Count); foreach (var expected in expectedSafeScrubFields) { Assert.IsTrue(result.Contains(expected)); } }
/// <summary> /// Configures the Rollbar infrastructure. /// </summary> private static void ConfigureRollbarInfrastructure() { // minimally required Rollbar configuration: RollbarInfrastructureConfig rollbarInfrastructureConfig = new RollbarInfrastructureConfig( RollbarSamplesSettings.AccessToken, RollbarSamplesSettings.Environment ); // optionally, add data scrubbing options: RollbarDataSecurityOptions dataSecurityOptions = new RollbarDataSecurityOptions(); dataSecurityOptions.ScrubFields = new string[] { "access_token", // normally, you do not want scrub this specific field (it is operationally critical), but it just proves safety net built into the notifier... "username", }; rollbarInfrastructureConfig.RollbarLoggerConfig.RollbarDataSecurityOptions.Reconfigure(dataSecurityOptions); // initialize Rollbar infrastructure: RollbarInfrastructure.Instance.Init(rollbarInfrastructureConfig); // optionally, if you would like to monitor all Rollbar instances' internal events within your application: RollbarInfrastructure.Instance.QueueController.InternalEvent += OnRollbarInternalEvent; // optionally, if you would like to monitor this Rollbar instance's internal events within your application: RollbarLocator.RollbarInstance.InternalEvent += OnRollbarInternalEvent; // basic test: RollbarLocator.RollbarInstance.Info($"{typeof(MvcApplication).Namespace}: Rollbar is up and running!"); }
/// <summary> /// Configures the Rollbar singleton-like notifier. /// </summary> private static void ConfigureRollbarSingleton() { // minimally required Rollbar configuration: RollbarInfrastructureConfig config = new RollbarInfrastructureConfig( RollbarSamplesSettings.AccessToken, RollbarSamplesSettings.Environment ); // optional: RollbarOfflineStoreOptions offlineStoreOptions = new RollbarOfflineStoreOptions(); offlineStoreOptions.EnableLocalPayloadStore = true; config.RollbarOfflineStoreOptions.Reconfigure(offlineStoreOptions); // optional: RollbarTelemetryOptions telemetryOptions = new RollbarTelemetryOptions(true, 3); config.RollbarTelemetryOptions.Reconfigure(telemetryOptions); // optional: //HttpProxyOptions proxyOptions = new HttpProxyOptions("http://something.com"); //config.RollbarLoggerConfig.HttpProxyOptions.Reconfigure(proxyOptions); // optional: RollbarDataSecurityOptions dataSecurityOptions = new RollbarDataSecurityOptions(); dataSecurityOptions.ScrubFields = new string[] { "access_token", // normally, you do not want scrub this specific field (it is operationally critical), but it just proves safety net built into the notifier... "username", "criticalObj[Sample.NetCore.ConsoleApp.Program+InstanceType]._baseNullField", "data.custom.criticalObj[Sample.NetCore.ConsoleApp.Program+InstanceType].<TypeName>k__BackingField", }; config.RollbarLoggerConfig.RollbarDataSecurityOptions.Reconfigure(dataSecurityOptions); // optional: RollbarPayloadAdditionOptions payloadAdditionOptions = new RollbarPayloadAdditionOptions(); payloadAdditionOptions.Person = new Person() { Id = "007", Email = "*****@*****.**", UserName = "******", }; config.RollbarLoggerConfig.RollbarPayloadAdditionOptions.Reconfigure(payloadAdditionOptions); // initialize the Rollbar Infrastructure: RollbarInfrastructure.Instance.Init(config); // optional step if you would like to monitor all Rollbar instances' internal events within your application: RollbarInfrastructure.Instance.QueueController.InternalEvent += OnRollbarInternalEvent; // optional step if you would like to monitor this Rollbar instance's internal events within your application: //RollbarLocator.RollbarInstance.InternalEvent += OnRollbarInternalEvent; }
/// <summary> /// Sets the fixture up. /// </summary> //[TestInitialize] public virtual void SetupFixture() { RollbarUnitTestEnvironmentUtil.SetupLiveTestRollbarInfrastructure(); RollbarDataSecurityOptions dataSecurityOptions = new RollbarDataSecurityOptions(); dataSecurityOptions.ScrubFields = new string[] { "secret", "super_secret", }; RollbarInfrastructure.Instance .Config .RollbarLoggerConfig .RollbarDataSecurityOptions .Reconfigure(dataSecurityOptions); this._loggerConfig = RollbarInfrastructure.Instance.Config.RollbarLoggerConfig; this.Reset(); }
/// <summary> /// Provides the live rollbar configuration. /// </summary> /// <param name="rollbarAccessToken">The rollbar access token.</param> /// <param name="rollbarEnvironment">The rollbar environment.</param> /// <returns>IRollbarConfig.</returns> protected IRollbarLoggerConfig ProvideLiveRollbarConfig(string rollbarAccessToken, string rollbarEnvironment) { if (this._loggerConfig == null) { RollbarDestinationOptions destinationOptions = new RollbarDestinationOptions(rollbarAccessToken, rollbarEnvironment); RollbarDataSecurityOptions dataSecurityOptions = new RollbarDataSecurityOptions(); dataSecurityOptions.ScrubFields = new string[] { "secret", "super_secret", }; RollbarLoggerConfig loggerConfig = new RollbarLoggerConfig(); loggerConfig.RollbarDestinationOptions.Reconfigure(destinationOptions); loggerConfig.RollbarDataSecurityOptions.Reconfigure(dataSecurityOptions); this._loggerConfig = loggerConfig; } return(this._loggerConfig); }
// STEP.2 - Setup Rollbar Infrastructure: private void ConfigureRollbarInfrastructure() { RollbarInfrastructureConfig config = new RollbarInfrastructureConfig( RollbarSamplesSettings.AccessToken, RollbarSamplesSettings.Environment ); RollbarDataSecurityOptions dataSecurityOptions = new RollbarDataSecurityOptions(); dataSecurityOptions.ScrubFields = new string[] { "url", "method", }; config.RollbarLoggerConfig.RollbarDataSecurityOptions.Reconfigure(dataSecurityOptions); RollbarInfrastructure.Instance.Init(config); // Optionally: RollbarInfrastructure.Instance.QueueController.InternalEvent += OnRollbarInternalEvent; }
public void TestAppenderReconfiguration() { Person[] expectedPersons = new Person[] { null, new Person("Person1"), new Person("Person2"), }; RollbarAppender appender = new RollbarAppender( RollbarUnitTestSettings.AccessToken, RollbarUnitTestSettings.Environment, TimeSpan.FromSeconds(3) ); string repositoryName = typeof(RollbarAppenderFixture).Name; var repository = LoggerManager.CreateRepository(repositoryName); string loggerName = typeof(RollbarAppenderFixture).Name; BasicConfigurator.Configure(repository, appender); ILog log = LogManager.GetLogger(repositoryName, loggerName); log.Info("Via log4net"); RollbarLoggerConfig newConfig = new RollbarLoggerConfig(); newConfig.Reconfigure(appender.RollbarConfig); newConfig.RollbarPayloadAdditionOptions.Person = expectedPersons[1]; appender.RollbarConfig.Reconfigure(newConfig); log.Info("Via log4net"); newConfig = new RollbarLoggerConfig(); newConfig.Reconfigure(appender.RollbarConfig); newConfig.RollbarPayloadAdditionOptions.Person = expectedPersons[2]; RollbarDataSecurityOptions dataSecurityOptions = new RollbarDataSecurityOptions(); dataSecurityOptions.ScrubFields = new string[] { "log4net:UserName", "log4net:HostName", "log4net:Identity", }; newConfig.RollbarDataSecurityOptions.Reconfigure(dataSecurityOptions); appender.RollbarConfig.Reconfigure(newConfig); log.Info("Via log4net"); // wait until all the payloads are processed and transmitted Thread.Sleep(TimeSpan.FromSeconds(5)); Assert.IsTrue(this._rollbarCommEvents.Count == 3 || this._rollbarCommErrorEvents.Count == 3, "Either comm successes or errors are captured..."); if (this._rollbarCommErrorEvents.Count == 3) { //this scenario happens on the CI server (Azure Pipelines): foreach (var commErrorEvent in this._rollbarCommErrorEvents) { Assert.IsTrue( commErrorEvent.Error.Message.Contains( "Preliminary ConnectivityMonitor detected offline status!"), "Matching error message." ); } Assert.IsFalse(this._rollbarCommErrorEvents[0].Payload.Contains("\"person\":{\"id\":"), "checking this._rollbarCommErrorEvents[0].Payload"); Assert.IsTrue(this._rollbarCommErrorEvents[1].Payload.Contains(expectedPersons[1].Id), "checking this._rollbarCommErrorEvents[1].Payload"); Assert.IsTrue(this._rollbarCommErrorEvents[2].Payload.Contains(expectedPersons[2].Id), "checking this._rollbarCommErrorEvents[2].Payload"); } else { Assert.IsFalse(this._rollbarCommEvents[0].Payload.Contains("\"person\":{\"id\":"), "checking this._rollbarCommEvents[0].Payload"); Assert.IsTrue(this._rollbarCommEvents[1].Payload.Contains(expectedPersons[1].Id), "checking this._rollbarCommEvents[1].Payload"); Assert.IsTrue(this._rollbarCommEvents[2].Payload.Contains(expectedPersons[2].Id), "checking this._rollbarCommEvents[2].Payload"); } }