public void FullTextFormatter_FormatToTextWriter_ContainsCustomProperties()
        {
            var rendererMap = new ScribeSharp.PropertyRenderers.TypeRendererMap(new KeyValuePair <Type, IPropertyRenderer>(typeof(Exception), new PropertyRenderers.ExceptionAsXmlRenderer()));
            var formatter   = new FullTextLogEventFormatter(rendererMap);
            var logEvent    = new LogEvent()
            {
                EventName        = "Test log event.",
                Source           = "TestSource",
                SourceMethod     = "TestSourceMethod",
                SourceLineNumber = 50,
                DateTime         = new DateTime(2016, 05, 08, 12, 15, 36),
                EventSeverity    = LogEventSeverity.Diagnostic,
                EventType        = LogEventType.Start,
                Properties       = new Dictionary <string, object>()
                {
                    { "Test Property", "Test Value" }
                }
            };

            var sb = new System.Text.StringBuilder();

            using (var writer = new System.IO.StringWriter(sb))
            {
                formatter.FormatToTextWriter(logEvent, writer);
                Assert.IsTrue(sb.ToString().Contains("Properties:"));
                Assert.IsTrue(sb.ToString().Contains("Test Property: Test Value"));
            }
        }
        public void FullTextFormatter_FormatToString_ContainsEventName()
        {
            var rendererMap = new ScribeSharp.PropertyRenderers.TypeRendererMap(new KeyValuePair <Type, IPropertyRenderer>(typeof(Exception), new PropertyRenderers.ExceptionAsXmlRenderer()));
            var formatter   = new FullTextLogEventFormatter(rendererMap);
            var logEvent    = new LogEvent()
            {
                EventName = "Test log event."
            };
            var result = formatter.FormatToString(logEvent);

            Assert.IsTrue(result.Contains("Event Name: Test log event."));
        }
        public void SimpleLogEventFormatter_FormatToString_WritesExpectedOutput()
        {
            var typeRendererMap = new ScribeSharp.PropertyRenderers.TypeRendererMap(new KeyValuePair <Type, IPropertyRenderer>(typeof(Exception), new PropertyRenderers.ExceptionAsXmlRenderer()));
            var formatter       = new SimpleLogEventFormatter(typeRendererMap);

            var logEvent = new LogEvent()
            {
                EventName = "Test log event.",
                Source    = "Test Source"
            };

            Assert.AreEqual("[01/01/0001 00:00:00] [Information] [ApplicationEvent] [Test Source] [] Test log event.\r\n", formatter.FormatToString(logEvent));
        }
        public void FullTextFormatter_FormatToString_UsesExceptionFormatter()
        {
            var rendererMap = new ScribeSharp.PropertyRenderers.TypeRendererMap(new KeyValuePair <Type, IPropertyRenderer>(typeof(Exception), new PropertyRenderers.ExceptionAsXmlRenderer()));
            var formatter   = new FullTextLogEventFormatter(rendererMap);
            var logEvent    = new LogEvent()
            {
                EventName = "Test log event.",
                Exception = new System.InvalidOperationException()
            };
            var result        = formatter.FormatToString(logEvent);
            var exceptionData = logEvent.Exception.ToXml();

            Assert.IsTrue(result.Contains(exceptionData));
        }
        public void FullTextFormatter_FormatToString_ContainsDateTime()
        {
            var rendererMap = new ScribeSharp.PropertyRenderers.TypeRendererMap(new KeyValuePair <Type, IPropertyRenderer>(typeof(Exception), new PropertyRenderers.ExceptionAsXmlRenderer()));
            var formatter   = new FullTextLogEventFormatter(rendererMap);
            var logEvent    = new LogEvent()
            {
                EventName        = "Test log event.",
                Source           = "TestSource",
                SourceMethod     = "TestSourceMethod",
                SourceLineNumber = 50,
                DateTime         = new DateTime(2016, 05, 08, 12, 15, 36)
            };
            var result = formatter.FormatToString(logEvent);

            Assert.IsTrue(result.Contains("Date: " + logEvent.DateTime.ToString("G", System.Globalization.CultureInfo.InvariantCulture)));
        }
        public void FullTextFormatter_FormatToTextWriter_ContainsEventName()
        {
            var rendererMap = new ScribeSharp.PropertyRenderers.TypeRendererMap(new KeyValuePair <Type, IPropertyRenderer>(typeof(Exception), new PropertyRenderers.ExceptionAsXmlRenderer()));
            var formatter   = new FullTextLogEventFormatter(rendererMap);
            var logEvent    = new LogEvent()
            {
                EventName = "Test log event."
            };

            var sb = new System.Text.StringBuilder();

            using (var writer = new System.IO.StringWriter(sb))
            {
                formatter.FormatToTextWriter(logEvent, writer);
                Assert.IsTrue(sb.ToString().Contains("Event Name: Test log event."));
            }
        }
        public void FullTextFormatter_FormatToString_FormatsPropertiesToOwnLines()
        {
            var rendererMap = new ScribeSharp.PropertyRenderers.TypeRendererMap(new KeyValuePair <Type, IPropertyRenderer>(typeof(Exception), new PropertyRenderers.ExceptionAsXmlRenderer()));
            var formatter   = new FullTextLogEventFormatter(rendererMap);
            var logEvent    = new LogEvent()
            {
                EventName  = "Test log event.",
                Properties = new Dictionary <string, object>()
            };

            logEvent.Properties.Add("Property 1", "Value 1");
            logEvent.Properties.Add("Property 2", "Value 2");

            var result = formatter.FormatToString(logEvent);

            Assert.IsTrue(result.Trim().EndsWith(Environment.NewLine + "Property 1: Value 1" + Environment.NewLine + "Property 2: Value 2"));
        }
        public void FullTextFormatter_FormatToString_ContainsSeverity()
        {
            var rendererMap = new ScribeSharp.PropertyRenderers.TypeRendererMap(new KeyValuePair <Type, IPropertyRenderer>(typeof(Exception), new PropertyRenderers.ExceptionAsXmlRenderer()));
            var formatter   = new FullTextLogEventFormatter(rendererMap);
            var logEvent    = new LogEvent()
            {
                EventName        = "Test log event.",
                Source           = "TestSource",
                SourceMethod     = "TestSourceMethod",
                SourceLineNumber = 50,
                DateTime         = new DateTime(2016, 05, 08, 12, 15, 36),
                EventSeverity    = LogEventSeverity.Diagnostic
            };
            var result = formatter.FormatToString(logEvent);

            Assert.IsTrue(result.Contains("Severity: Diagnostic"));
        }
        public void SimpleLogEventFormatter_FormatToWriter_WritesExpectedOutput()
        {
            var typeRendererMap = new ScribeSharp.PropertyRenderers.TypeRendererMap(new KeyValuePair <Type, IPropertyRenderer>(typeof(Exception), new PropertyRenderers.ExceptionAsXmlRenderer()));
            var formatter       = new SimpleLogEventFormatter(typeRendererMap);

            var logEvent = new LogEvent()
            {
                EventName = "Test log event.",
                Source    = "Test Source"
            };

            var sb = new System.Text.StringBuilder();

            using (var writer = new System.IO.StringWriter(sb))
            {
                formatter.FormatToTextWriter(logEvent, writer);

                Assert.AreEqual("[01/01/0001 00:00:00] [Information] [ApplicationEvent] [Test Source] [] Test log event.\r\n", sb.ToString());
            }
        }
        public void XmlLogEventFormatter_FormatToWriter_FormatsExpectedOutput()
        {
            var logEvent = new LogEvent()
            {
                EventName  = "Test event log.",
                Source     = "Test Source",
                Properties = new Dictionary <string, object>()
                {
                    { "Test Property", "Test Value" }
                },
                Exception = new System.InvalidOperationException()
            };

            var rendererMap = new ScribeSharp.PropertyRenderers.TypeRendererMap(new KeyValuePair <Type, IPropertyRenderer>(typeof(Exception), new PropertyRenderers.ExceptionAsXmlRenderer()));
            var formatter   = new XmlLogEventFormatter(rendererMap);

            var sb = new StringBuilder();

            using (var writer = new System.IO.StringWriter(sb))
            {
                formatter.FormatToTextWriter(logEvent, writer);
                var xdoc = System.Xml.Linq.XDocument.Parse(sb.ToString());

                Assert.AreEqual("Test event log.", (from n in xdoc.Descendants("EventName") select n).First().Value);
                var eventNode = (from n in xdoc.Descendants("LogEvent") select n).First();
                Assert.AreEqual(LogEventSeverity.Information.ToString(), eventNode.Attribute("Severity").Value);
                Assert.AreEqual((int)LogEventSeverity.Information, Convert.ToInt32(eventNode.Attribute("SeverityLevel").Value));
                Assert.AreEqual(LogEventType.ApplicationEvent.ToString(), eventNode.Attribute("EventType").Value);
                Assert.AreEqual("Test Source", eventNode.Attribute("Source").Value);
                Assert.AreEqual(logEvent.DateTime.ToString("O", System.Globalization.CultureInfo.CurrentCulture), eventNode.Attribute("EventDate").Value);

                var propNode = (from n in xdoc.Descendants("Property") where n.Attribute("Key")?.Value == "Test Property" select n).First();
                Assert.AreEqual("Test Value", propNode.Attribute("Value").Value);

                var exceptionNode = (from n in xdoc.Descendants("Exception") select n).First();
                Assert.AreEqual("System.InvalidOperationException", exceptionNode.Attribute("Type").Value);
                Assert.AreEqual("Operation is not valid due to the current state of the object.", exceptionNode.Descendants("Message").First().Value);
            }
        }
 public void SimpleLogEventFormatter_Constructor_ConstructsOkWithValidTypeRendererMap()
 {
     var typeRendererMap = new ScribeSharp.PropertyRenderers.TypeRendererMap(new KeyValuePair <Type, IPropertyRenderer>(typeof(Exception), new PropertyRenderers.ExceptionAsXmlRenderer()));
     var formatter       = new SimpleLogEventFormatter(typeRendererMap);
 }