public IColumnizedLogLine SplitLine(ILogLineColumnizerCallback callback, ILogLine line) { ColumnizedLogLine cLogLine = new ColumnizedLogLine(); cLogLine.LogLine = line; string temp = line.FullLine; Column[] columns = Column.CreateColumns(COLUMN_COUNT, cLogLine); cLogLine.ColumnValues = columns.Select(a => a as IColumn).ToArray(); // delete '[#|' and '|#]' if (temp.StartsWith("[#|")) { temp = temp.Substring(3); } if (temp.EndsWith("|#]")) { temp = temp.Substring(0, temp.Length - 3); } // If the line is too short (i.e. does not follow the format for this columnizer) return the whole line content // in colum 8 (the log message column). Date and time column will be left blank. if (temp.Length < 28) { columns[1].FullValue = temp; } else { try { DateTime dateTime = GetTimestamp(callback, line); if (dateTime == DateTime.MinValue) { columns[1].FullValue = temp; } string newDate = dateTime.ToString(DATETIME_FORMAT_OUT); columns[0].FullValue = newDate; } catch (Exception) { columns[0].FullValue = "n/a"; } Column timestmp = columns[0]; string[] cols; cols = temp.Split(this.trimChars, COLUMN_COUNT, StringSplitOptions.None); if (cols.Length != COLUMN_COUNT) { columns[0].FullValue = string.Empty; columns[1].FullValue = temp; } else { columns[0] = timestmp; columns[1].FullValue = cols[1]; } } return(cLogLine); }