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); }
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); }
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())); }
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); }
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); }
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); }
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()); }
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)); }
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"]); }
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); }
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"]); }
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"); }
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); }
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); }
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)); }
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); }
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()); }
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); }
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)); }
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"]); }
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); }
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"]); }
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); }
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"]); }
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()); }