public string Build(string message, object[] messageArgs, string reason, ContextDataItems contextData) { string result = SubstituteReasonTag(message, SanitizeReason(reason)); result = SubstituteContextualTags(result, contextData); result = FormatArgumentPlaceholders(result, messageArgs); return result; }
private string SubstituteContextualTags(string message, ContextDataItems contextData) { var regex = new Regex(@"\{(?<key>[a-z|A-Z]+)(?:\:(?<default>[a-z|A-Z|\s]+))?\}"); return regex.Replace(message, match => { string key = match.Groups["key"].Value; return contextData.AsStringOrDefault(key) ?? match.Groups["default"].Value; }); }