private void AddLoggingEventToMessage(LoggingEvent loggingEvent, GelfMessage gelfMessage)
{
//If conversion pattern is specified then defer to PatterLayout for building the message body
if (!string.IsNullOrWhiteSpace(ConversionPattern))
{
var message = GetValueFromPattern(loggingEvent, ConversionPattern);
gelfMessage.FullMessage = message;
gelfMessage.ShortMessage = message.TruncateMessage(SHORT_MESSAGE_LENGTH);
}
else //Otherwise do our custom message builder stuff
{
var messageObject = loggingEvent.MessageObject;
if (messageObject == null)
{
if (!string.IsNullOrEmpty(loggingEvent.RenderedMessage))
{
if (loggingEvent.RenderedMessage.ValidateJSON())
{
AddToMessage(gelfMessage, loggingEvent.RenderedMessage.ToJson().ToDictionary());
}
gelfMessage.FullMessage = !string.IsNullOrEmpty(gelfMessage.FullMessage) ? gelfMessage.FullMessage : loggingEvent.RenderedMessage;
gelfMessage.ShortMessage = !string.IsNullOrEmpty(gelfMessage.ShortMessage) ? gelfMessage.ShortMessage : gelfMessage.FullMessage.TruncateMessage(SHORT_MESSAGE_LENGTH);
return;
}
gelfMessage.FullMessage = SystemInfo.NullText;
gelfMessage.ShortMessage = SystemInfo.NullText;
}
if (messageObject is string || messageObject is SystemStringFormat)
{
var fullMessage = messageObject.ToString();
gelfMessage.FullMessage = fullMessage;
gelfMessage.ShortMessage = fullMessage.TruncateMessage(SHORT_MESSAGE_LENGTH);
}
else if (messageObject is IDictionary)
{
AddToMessage(gelfMessage, messageObject as IDictionary);
}
else
{
AddToMessage(gelfMessage, messageObject.ToDictionary());
}
gelfMessage.FullMessage = !string.IsNullOrEmpty(gelfMessage.FullMessage) ? gelfMessage.FullMessage : messageObject.ToString();
gelfMessage.ShortMessage = !string.IsNullOrEmpty(gelfMessage.ShortMessage) ? gelfMessage.ShortMessage : gelfMessage.FullMessage.TruncateMessage(SHORT_MESSAGE_LENGTH);
}
if (LogStackTraceFromMessage && loggingEvent.ExceptionObject != null)
{
gelfMessage.FullMessage = string.Format("{0} - {1}.", gelfMessage.FullMessage, loggingEvent.GetExceptionString());
}
}