コード例 #1
0
        public void GivenAnExceptionWithNoMetadata_LogMessage__LogsTheException(TheoryLoggerEventType eventType,
                                                                                string formattedMessageTab)
        {
            // Arrange.
            SetupLogManager(formattedMessageTab);
            var          logger       = LogManager.GetLogger("test");
            const string errorMessage = "Something sad happened.";
            var          exception    = new Exception(errorMessage);

            const string formattedErrorMessage = "pew pew";
            string       error;

            // Act.
            using (var testServer = new TestServer())
            {
                LogMessage(eventType, logger)(exception, formattedErrorMessage);
                error = testServer.GetLastResponse();
            }

            // Assert.
            var anotherTabName = string.IsNullOrWhiteSpace(formattedMessageTab)
                ? "Custom Data"
                : formattedMessageTab;

            var result = JObject.Parse(error);

            result["events"][0]["exceptions"][0]["message"].ToString().ShouldBe(errorMessage);
            result["events"][0]["exceptions"][0]["stacktrace"].HasValues.ShouldBe(true);
            result["events"][0]["metaData"].Count().ShouldBe(2);
            result["events"][0]["metaData"][anotherTabName][BugsnagTarget.FormattedMessageKey].ShouldBe(formattedErrorMessage);
            result["events"][0]["severity"].ToString().ShouldBe(MapTheoryLoggerEventTypeToSeverity(eventType));
        }
コード例 #2
0
        private static Action <string> LogMessageWithNoException(TheoryLoggerEventType eventType, ILogger logger)
        {
            if (logger == null)
            {
                throw new ArgumentNullException("logger");
            }

            Action <string> result;

            switch (eventType)
            {
            case TheoryLoggerEventType.Error: result = logger.Error;
                break;

            case TheoryLoggerEventType.Warning: result = logger.Warn;
                break;

            case TheoryLoggerEventType.Info: result = logger.Info;
                break;

            case TheoryLoggerEventType.Debug: result = logger.Info;
                break;

            case TheoryLoggerEventType.Trace: result = logger.Info;
                break;

            default:
                throw new NotImplementedException("damn!");
            }

            return(result);
        }
コード例 #3
0
        public void GivenAMessage_LogMessage_LogsTheErrorMessage(TheoryLoggerEventType eventType)
        {
            // Arrange.
            SetupLogManager(null);
            var          logger       = LogManager.GetLogger("test");
            const string errorMessage = "Something sad happened.";

            string error;

            // Act.
            using (var testServer = new TestServer())
            {
                LogMessageWithNoException(eventType, logger)(errorMessage);
                error = testServer.GetLastResponse();
            }

            // Assert.
            var result = JObject.Parse(error);

            result["events"][0]["exceptions"][0]["errorClass"].ToString().ShouldBe("BugsnagException");
            result["events"][0]["exceptions"][0]["message"].ToString().ShouldBe(errorMessage);
            result["events"][0]["exceptions"][0]["stacktrace"].HasValues.ShouldBe(true);
            result["events"][0]["metaData"].Count().ShouldBe(1);
            result["events"][0]["metaData"]["Exception Details"]["runtimeEnding"].ToString().ShouldBe("False");
        }
コード例 #4
0
        private static string MapTheoryLoggerEventTypeToSeverity(TheoryLoggerEventType eventType)
        {
            string result;

            switch (eventType)
            {
            case TheoryLoggerEventType.Error:
                result = "error";
                break;

            case TheoryLoggerEventType.Warning:
                result = "warning";
                break;

            default:
                result = "info";
                break;
            }

            return(result);
        }