Beispiel #1
0
        public void CustomObjectWithMessageProperty()
        {
            var layout  = new GelfLayout();
            var message = new { Message = "Success", Test = 1 };

            var loggingEvent = GetLogginEvent(message);
            var result       = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result.FullMessage, message.Message);
            Assert.AreEqual(result["_Test"], message.Test);

            var message2 = new { FullMessage = "Success", Test = 1 };

            loggingEvent = GetLogginEvent(message2);
            result       = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result.FullMessage, message2.FullMessage);
            Assert.AreEqual(result["_Test"], message2.Test);

            var message3 = new { message = "Success", Test = 1 };

            loggingEvent = GetLogginEvent(message3);
            result       = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result.FullMessage, message3.message);
            Assert.AreEqual(result["_Test"], message3.Test);

            var message4 = new { full_Message = "Success", Test = 1 };

            loggingEvent = GetLogginEvent(message4);
            result       = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result.FullMessage, message4.full_Message);
            Assert.AreEqual(result["_Test"], message4.Test);
        }
Beispiel #2
0
        public void NumericPropertiesAreNotConvertedToStrings()
        {
            var layout = new GelfLayout();

            var message = "test";

            ThreadContext.Properties["decimal"]  = 1m;
            ThreadContext.Properties["double"]   = 1d;
            ThreadContext.Properties["float"]    = 1f;
            ThreadContext.Properties["int"]      = 1;
            ThreadContext.Properties["uint"]     = (uint)1;
            ThreadContext.Properties["long"]     = 1L;
            ThreadContext.Properties["ulong"]    = 1ul;
            ThreadContext.Properties["short"]    = (short)1;
            ThreadContext.Properties["ushort"]   = (ushort)1;
            ThreadContext.Properties["nullable"] = (int?)1;

            var loggingEvent = GetLogginEvent(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result["_decimal"], 1);
            Assert.AreEqual(result["_double"], 1);
            Assert.AreEqual(result["_float"], 1);
            Assert.AreEqual(result["_int"], 1);
            Assert.AreEqual(result["_uint"], 1);
            Assert.AreEqual(result["_long"], 1);
            Assert.AreEqual(result["_ulong"], 1);
            Assert.AreEqual(result["_short"], 1);
            Assert.AreEqual(result["_ushort"], 1);
            Assert.AreEqual(result["_nullable"], 1);
        }
Beispiel #3
0
        private GelfMessage GetMessage(GelfLayout layout, LoggingEvent message)
        {
            var sb = new StringBuilder();

            using (var sw = new StringWriter(sb))
                layout.Format(sw, message);

            return(JsonConvert.DeserializeObject <GelfMessage>(sb.ToString()));
        }
Beispiel #4
0
        public void StringFormat_WithRenderedMessage()
        {
            var layout = new GelfLayout();

            var message      = new SystemStringFormat(CultureInfo.CurrentCulture, "This is a {0}", "test");
            var loggingEvent = GetLogginEventRenderedMessage(message.ToString());

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(message.ToString(), result.FullMessage);
            Assert.AreEqual(message.ToString(), result.ShortMessage);
        }
Beispiel #5
0
        public void CustomObjectAddedAsAdditionalProperties()
        {
            var layout = new GelfLayout();

            var message      = new { Test = 1, Test2 = "YES!!!" };
            var loggingEvent = GetLogginEvent(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result["_Test"], message.Test);
            Assert.AreEqual(result["_Test2"], message.Test2);
        }
Beispiel #6
0
        public void Strings_WithRenderedMessage()
        {
            var layout = new GelfLayout();

            var message      = "test";
            var loggingEvent = GetLogginEventRenderedMessage(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(message, result.FullMessage);
            Assert.AreEqual(message, result.ShortMessage);
        }
Beispiel #7
0
        public void CustomObjectAddedAsAdditionalProperties_WithRenderedMessage()
        {
            var layout = new GelfLayout();

            var message      = new { Test = 1, Test2 = "YES!!!" };
            var messageJson  = JsonConvert.SerializeObject(message);
            var loggingEvent = GetLogginEventRenderedMessage(messageJson);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result["_Test"], message.Test.ToString());
            Assert.AreEqual(result["_Test2"], message.Test2.ToString());
        }
Beispiel #8
0
        public void NullPropertyValueDoesNotCauseException_WithRenderedMessage()
        {
            var layout = new GelfLayout();

            layout.IncludeLocationInformation = true;

            var message      = "test";
            var loggingEvent = GetLogginEventRenderedMessage(message);

            loggingEvent.Properties["nullProperty"] = null;

            Assert.DoesNotThrow(() => GetMessage(layout, loggingEvent));
        }
Beispiel #9
0
        public void DictionaryMessage()
        {
            var layout  = new GelfLayout();
            var message = new Dictionary <string, string> {
                { "Test", "1" }, { "_Test2", "2" }
            };

            var loggingEvent = GetLogginEvent(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result["_Test"], message["Test"]);
            Assert.AreEqual(result["_Test2"], message["_Test2"]);
        }
Beispiel #10
0
        public void CanRenderGelfAdditionalFields()
        {
            var loggerName = "TestLogger";
            var facility   = "TestFacility";
            var dateTime   = DateTime.Now;
            var message    = "hello, gelf :)";
            var logLevel   = LogLevel.Info;
            var hostname   = Dns.GetHostName();
            var gelfLayout = new GelfLayout();

            gelfLayout.Facility = facility;
            gelfLayout.ExtraFields.Add(new GelfField("ThreadId", "${threadid}")
            {
                PropertyType = typeof(int)
            });

            var logEvent = new LogEventInfo
            {
                LoggerName = loggerName,
                Level      = logLevel,
                Message    = message,
                TimeStamp  = dateTime,
            };

            int threadId         = System.Threading.Thread.CurrentThread.ManagedThreadId;
            var renderedGelf     = gelfLayout.Render(logEvent);
            var expectedDateTime = GelfConverter.ToUnixTimeStamp(dateTime);
            var expectedGelf     = string.Format(System.Globalization.CultureInfo.InvariantCulture,
                                                 "{{\"facility\":\"{0}\","
                                                 + "\"file\":\"TestLogger\","
                                                 + "\"full_message\":\"{1}\","
                                                 + "\"host\":\"{2}\","
                                                 + "\"level\":{3},"
                                                 + "\"line\":0,"
                                                 + "\"short_message\":\"{4}\","
                                                 + "\"timestamp\":{5},"
                                                 + "\"version\":\"1.1\","
                                                 + "\"_LoggerName\":\"{6}\","
                                                 + "\"_ThreadId\":{7}}}",
                                                 facility,
                                                 message,
                                                 hostname,
                                                 logLevel.GetOrdinal(),
                                                 message,
                                                 expectedDateTime,
                                                 loggerName,
                                                 threadId);

            Assert.AreEqual(expectedGelf, renderedGelf);
        }
Beispiel #11
0
        public void PatternConversionLayoutSpecified_WithRenderedMessage()
        {
            var layout = new GelfLayout();

            layout.ConversionPattern = "[%level] - [%c{1}]";
            var message = JsonConvert.SerializeObject(new { Message = "Test" });

            var loggingEvent = GetLogginEventRenderedMessage(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual("[DEBUG] - [Class]", result["full_message"]);
            Assert.AreEqual("[DEBUG] - [Class]", result["short_message"]);
        }
Beispiel #12
0
        public void BaseGelfDataIncluded_WithRenderedMessage()
        {
            var layout       = new GelfLayout();
            var message      = "test";
            var loggingEvent = GetLogginEventRenderedMessage(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result.FullMessage, message);
            Assert.AreEqual(result.Facility, "Gelf");
            Assert.AreEqual(result.Host, Environment.MachineName);
            Assert.AreEqual(result.Level, (int)LocalSyslogAppender.SyslogSeverity.Debug);
            Assert.IsTrue(result.TimeStamp >= DateTime.Now.AddMinutes(-1));
            Assert.AreEqual(result.Version, "1.0");
        }
Beispiel #13
0
        public void ThreadContextPropertiesAddedAsAdditionalProperties()
        {
            var layout = new GelfLayout();

            var message = "test";

            ThreadContext.Properties["TraceID"] = 1;

            var loggingEvent = GetLogginEvent(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result.FullMessage, message);
            Assert.AreEqual(result["_TraceID"], 1);
        }
Beispiel #14
0
        public void CustomPropertyWithUnderscoreIsAddedCorrectly_WithRenderedMessage()
        {
            var layout = new GelfLayout();

            var message = "test";

            ThreadContext.Properties["_TraceID"] = 1;

            var loggingEvent = GetLogginEventRenderedMessage(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result.FullMessage, message);
            Assert.AreEqual(result["_TraceID"], 1);
        }
Beispiel #15
0
        public void ToStringOnObjectIfNoMessageIsProvided()
        {
            var layout = new GelfLayout();

            var message = new { Test = 1, Test2 = 2 };

            var loggingEvent = GetLogginEvent(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result["_Test"], message.Test);
            Assert.AreEqual(result["_Test2"], message.Test2);
            Assert.AreEqual(result.FullMessage, message.ToString());
            Assert.AreEqual(result.ShortMessage, message.ToString().TruncateMessage(250));
        }
Beispiel #16
0
        public void CanRenderGelfWithBadObject()
        {
            var loggerName = "TestLogger";
            var facility   = "TestFacility";
            var dateTime   = DateTime.Now;
            var message    = "hello, gelf :)";
            var logLevel   = LogLevel.Info;
            var hostname   = Dns.GetHostName();
            var gelfLayout = new GelfLayout();

            gelfLayout.Facility             = facility;
            gelfLayout.IncludeAllProperties = true;

            var logEvent = new LogEventInfo
            {
                LoggerName = loggerName,
                Level      = logLevel,
                Message    = message,
                TimeStamp  = dateTime,
            };

            logEvent.Properties["BadBoy"] = new BadLogObject();

            var renderedGelf     = gelfLayout.Render(logEvent);
            var expectedDateTime = GelfConverter.ToUnixTimeStamp(dateTime);
            var expectedGelf     = string.Format(System.Globalization.CultureInfo.InvariantCulture,
                                                 "{{\"facility\":\"{0}\","
                                                 + "\"file\":\"TestLogger\","
                                                 + "\"full_message\":\"{1}\","
                                                 + "\"host\":\"{2}\","
                                                 + "\"level\":{3},"
                                                 + "\"line\":0,"
                                                 + "\"short_message\":\"{4}\","
                                                 + "\"timestamp\":{5},"
                                                 + "\"version\":\"1.1\","
                                                 + "\"_BadBoy\":{{\"BadArray\":[],\"BadProperty\":\"{6}\"}},"
                                                 + "\"_LoggerName\":\"{7}\"}}",
                                                 facility,
                                                 message,
                                                 hostname,
                                                 logLevel.GetOrdinal(),
                                                 message,
                                                 expectedDateTime,
                                                 typeof(BadLogObject).Assembly.ToString(),
                                                 loggerName);

            Assert.AreEqual(expectedGelf, renderedGelf);
        }
Beispiel #17
0
        public void ObjectPropertiesConvertedToStrings()
        {
            var layout = new GelfLayout();

            var message = "test";

            var someObject = new object();

            ThreadContext.Properties["obj"] = someObject;

            var loggingEvent = GetLogginEvent(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result["_obj"], someObject.ToString());
        }
Beispiel #18
0
        public void IncludeLocationInformation_WithRenderedMessage()
        {
            var layout = new GelfLayout();

            layout.IncludeLocationInformation = true;

            var message      = "test";
            var loggingEvent = GetLogginEventRenderedMessage(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(message, result.FullMessage);
            Assert.AreEqual(message, result.ShortMessage);
            Assert.IsNotNullOrEmpty(result.Line);
            Assert.IsNotNullOrEmpty(result.File);
        }
Beispiel #19
0
        public void ToStringOnObjectIfNoMessageIsProvided_WithRenderedMessage()
        {
            var layout = new GelfLayout();

            var message     = new { Test = 1, Test2 = 2 };
            var messageJson = JsonConvert.SerializeObject(message);

            var loggingEvent = GetLogginEventRenderedMessage(messageJson);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result["_Test"], message.Test.ToString());
            Assert.AreEqual(result["_Test2"], message.Test2.ToString());
            Assert.AreEqual(result.FullMessage, messageJson);
            Assert.AreEqual(result.ShortMessage, messageJson.TruncateMessage(250));
        }
Beispiel #20
0
        public void PatternConversionInAdditionalProperties_WithRenderedMessage()
        {
            var layout = new GelfLayout();

            layout.AdditionalFields = "Level:%level,AppDomain:%a,LoggerName:%c{1},ThreadName:%t";
            var message = JsonConvert.SerializeObject(new { Message = "Test" });

            var loggingEvent = GetLogginEventRenderedMessage(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result["_Level"], "DEBUG");
            Assert.IsTrue(!string.IsNullOrWhiteSpace(result["_AppDomain"].ToString()));
            Assert.IsTrue(!string.IsNullOrWhiteSpace(result["_ThreadName"].ToString()));
            Assert.AreEqual("Class", result["_LoggerName"]);
        }
Beispiel #21
0
        public void SendTimeStampAsString()
        {
            var layout = new GelfLayout();

            layout.IncludeLocationInformation = true;

            var message      = "test";
            var loggingEvent = GetLogginEventRenderedMessage(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(message, result.FullMessage);
            Assert.AreEqual(message, result.ShortMessage);
            Assert.AreEqual(typeof(string), result["timestamp"].GetType());
            Assert.IsNotNullOrEmpty(result.Line);
            Assert.IsNotNullOrEmpty(result.File);
        }
Beispiel #22
0
        public void PatternConversionInAdditionalPropertiesWithCustomFieldSeparator()
        {
            var layout = new GelfLayout();

            layout.FieldSeparator   = "||";
            layout.AdditionalFields = "Level:%level||AppDomain:%a||LoggerName:%c{1}||ThreadName:%t";
            var message = new { Message = "Test" };

            var loggingEvent = GetLogginEvent(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result["_Level"], "DEBUG");
            Assert.IsTrue(!string.IsNullOrWhiteSpace(result["_AppDomain"].ToString()));
            Assert.IsTrue(!string.IsNullOrWhiteSpace(result["_ThreadName"].ToString()));
            Assert.AreEqual("Class", result["_LoggerName"]);
        }
Beispiel #23
0
        public void SendTimeStampAsNumber()
        {
            var layout = new GelfLayout();

            layout.IncludeLocationInformation = true;
            layout.SendTimeStampAsString      = false;

            var message      = "test";
            var loggingEvent = GetLogginEventRenderedMessage(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(message, result.FullMessage);
            Assert.AreEqual(message, result.ShortMessage);
            Assert.AreEqual(typeof(double), result["timestamp"].GetType());
            Assert.That(result.Line, Is.Not.Null.And.Not.Empty);
            Assert.That(result.File, Is.Not.Null.And.Not.Empty);
        }
Beispiel #24
0
        public void PatternConversionInAdditionalPropertiesWithCustomSeparators_WithRenderedMessage()
        {
            var layout = new GelfLayout();

            layout.FieldSeparator    = "||";
            layout.KeyValueSeparator = "=>";
            layout.AdditionalFields  = "Level=>%level||AppDomain=>%a||LoggerName=>%c{1}||ThreadName=>%t";
            var message = JsonConvert.SerializeObject(new { Message = "Test" });

            var loggingEvent = GetLogginEventRenderedMessage(message);

            var result = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result["_Level"], "DEBUG");
            Assert.IsTrue(!string.IsNullOrWhiteSpace(result["_AppDomain"].ToString()));
            Assert.IsTrue(!string.IsNullOrWhiteSpace(result["_ThreadName"].ToString()));
            Assert.AreEqual("Class", result["_LoggerName"]);
        }
Beispiel #25
0
        public void CustomObjectWithShortMessageProperty_WithRenderedMessage()
        {
            var layout      = new GelfLayout();
            var message     = new { ShortMessage = "Success", Test = 1 };
            var messageJson = JsonConvert.SerializeObject(message);

            var loggingEvent = GetLogginEventRenderedMessage(messageJson);
            var result       = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result.ShortMessage, message.ShortMessage);
            Assert.AreEqual(result["_Test"], message.Test.ToString());

            var message2     = new { short_message = "Success", Test = 1 };
            var message2Json = JsonConvert.SerializeObject(message2);

            loggingEvent = GetLogginEventRenderedMessage(message2Json);
            result       = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result.ShortMessage, message2.short_message);
            Assert.AreEqual(result["_Test"], message2.Test.ToString());

            var message3     = new { message = "Success", Test = 1 };
            var message3Json = JsonConvert.SerializeObject(message3);

            loggingEvent = GetLogginEventRenderedMessage(message3Json);
            result       = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result.FullMessage, message3.message);
            Assert.AreEqual(result.ShortMessage, message3.message);
            Assert.AreEqual(result["_Test"], message3.Test.ToString());

            var message4     = new { message = "Success", short_message = "test", Test = 1 };
            var message4Json = JsonConvert.SerializeObject(message4);

            loggingEvent = GetLogginEventRenderedMessage(message4Json);
            result       = GetMessage(layout, loggingEvent);

            Assert.AreEqual(result.FullMessage, message4.message);
            Assert.AreEqual(result.ShortMessage, message4.short_message);
            Assert.AreEqual(result["_Test"], message4.Test.ToString());
        }