public IColumnizedLogLine SplitLine(ILogLineColumnizerCallback callback, ILogLine line) { ColumnizedLogLine columnizedLogLine = new ColumnizedLogLine(); columnizedLogLine.LogLine = line; // Add the reference to the LogLine Column[] columns = Column.CreateColumns(GetColumnCount(), columnizedLogLine); columnizedLogLine.ColumnValues = columns.Select(a => a as IColumn).ToArray(); String[] tmp = SplitLine(callback, line.FullLine); for (int i = 0; i < columns.Length; i++) { columns[i].FullValue = tmp[i]; } return(columnizedLogLine); }
public IColumnizedLogLine SplitLine(ILogLineColumnizerCallback callback, ILogLine line) { ColumnizedLogLine clogLine = new ColumnizedLogLine(); clogLine.LogLine = line; Column[] columns = Column.CreateColumns(Log4jXmlColumnizer.COLUMN_COUNT, clogLine); // 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 (line.FullLine.Length < 15) { columns[8].FullValue = line.FullLine; } else { try { DateTime dateTime = GetTimestamp(callback, line); if (dateTime == DateTime.MinValue) { columns[8].FullValue = line.FullLine; } string newDate = dateTime.ToString(DATETIME_FORMAT); columns[0].FullValue = newDate; } catch (Exception) { columns[0].FullValue = "n/a"; } Column timestmp = columns[0]; string[] cols; cols = line.FullLine.Split(this.trimChars, Log4jXmlColumnizer.COLUMN_COUNT, StringSplitOptions.None); if (cols.Length != Log4jXmlColumnizer.COLUMN_COUNT) { columns[0].FullValue = ""; columns[1].FullValue = ""; columns[2].FullValue = ""; columns[3].FullValue = ""; columns[4].FullValue = ""; columns[5].FullValue = ""; columns[6].FullValue = ""; columns[7].FullValue = ""; columns[8].FullValue = line.FullLine; } else { columns[0] = timestmp; for (int i = 1; i < cols.Length; i++) { columns[i].FullValue = cols[i]; } } } Column[] filteredColumns = MapColumns(columns); clogLine.ColumnValues = filteredColumns.Select(a => a as IColumn).ToArray(); return(clogLine); }