示例#1
0
        public Log Read()
        {
            Log log;

            if (previousLine == null)
            {
                previousLine = lineReader.Read();
            }
            if (previousLine == null)
            {
                return(null);
            }

            do
            {
                log = new Log();
                log.Lines.Add(previousLine);

                while (true)
                {
                    previousLine = lineReader.Read();
                    if (previousLine == null)
                    {
                        break;
                    }
                    if (logPrefixMatcher.Match(previousLine.Value))
                    {
                        break;
                    }
                    log.Lines.Add(previousLine);
                }

                if (discardLogMatcher.Match(log.ToSingleLine()))
                {
                    log = null;                         // me must restart loading of a new log
                }
            } while ((previousLine != null) && (log == null));

            return(log);
        }