Пример #1
0
        /// <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!");
        }
Пример #4
0
        /// <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);
        }
Пример #7
0
        // 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");
            }
        }