private string LogEntriesToString(IEnumerable<LogEntry> entries)
{
const string columnText = " | ";
var maxTypeLength = _logEvents.Max(c => c.ToString("G").Length);
var stringBuilder = new StringBuilder();
var regexMultiline = new Regex(@"(?<=(^|\n)).*", RegexOptions.Multiline | RegexOptions.Compiled);
if (entries != null)
{
foreach (var entry in entries)
{
var date = entry.Time.ToString(CultureInfo.CurrentUICulture.ToString());
var type = entry.LogEvent.ToString("G").PadRight(maxTypeLength, ' ');
var datefiller = new String(' ', date.Length);
var typefiller = new String(' ', type.Length);
var message = entry.Message;
var matches = regexMultiline.Matches(message);
if (matches.Count <= 0)
{
continue;
}
stringBuilder.AppendFormat("{0}{4}{1}{4}{2}{3}", date, type, matches[0].Value, Environment.NewLine, columnText);
if (matches.Count <= 1)
{
continue;
}
for (int idx = 1, max = matches.Count; idx < max; idx++)
{
stringBuilder.AppendFormat("{0}{4}{1}{4}{2}{3}", datefiller, typefiller, matches[idx].Value, Environment.NewLine, columnText);
}
}
}
return stringBuilder.ToString();
}
#endregion