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);
        }
Пример #2
0
        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);
        }