private void AddAdditionalFields(LoggingEvent loggingEvent, GelfMessage message)
{
var additionalFields = ParseField(AdditionalFields) ?? new Dictionary<string, object>();
foreach (DictionaryEntry item in loggingEvent.GetProperties())
{
var key = item.Key as string;
if (key != null && !key.StartsWith("log4net:") /*exclude log4net built-in properties */ )
{
additionalFields.Add(key, FormatAdditionalField(item.Value));
}
}
foreach (var kvp in additionalFields)
{
var key = kvp.Key.StartsWith("_") ? kvp.Key : "_" + kvp.Key;
//If the value starts with a '%' then defer to the pattern layout
var patternValue = kvp.Value as string;
var value = patternValue != null && patternValue.StartsWith("%") ? GetValueFromPattern(loggingEvent, patternValue) : kvp.Value;
message[key] = value;
}
}