Example #1
0
        public void ProcessLine(string line, long lastReadLineStartPosition)
        {
            AssertResultNotTaken();

            LineCounter++;
            try
            {
                if (line.StartsWith("Logging started", StringComparison.Ordinal))
                {
                    var dayStamp = ParsingHelper.GetDateFromLogFileLoggingStarted(line);
                    if (dayStamp.Day > CurrentDay)
                    {
                        CurrentDay = dayStamp.Day;
                        LastLogLineStamp = TimeSpan.Zero;
                        AdvanceDays(line, lastReadLineStartPosition);
                    }
                    else if (firstLoggingStartedFound && dayStamp.Day < CurrentDay)
                    {
                        //seems the logs have invalid timestamps, we need to flag for rollback
                        RollbackHeuristics(dayStamp.Day);
                    }
                    firstLoggingStartedFound = true;
                }
                else
                {
                    var lineStamp = ParsingHelper.GetTimestampFromLogLine(line);
                    if (lineStamp < LastLogLineStamp
                        && ParsingHelper.AreMoreThanOneHourAppartOnSameDay(lineStamp, LastLogLineStamp))
                    {
                        CurrentDay++;
                        LastLogLineStamp = TimeSpan.Zero;
                        AdvanceDays(line, lastReadLineStartPosition);
                    }
                    else
                    {
                        LastLogLineStamp = lineStamp;
                    }
                }
            }
            catch (WurmApiException exception)
            {
                // ignore this line
                logger.Log(
                    LogLevel.Warn,
                    string.Format("Unexpected exception while parsing line: {0}", line),
                    this,
                    exception);
            }
        }
Example #2
0
 private bool OverflowsToNextDay(TimeSpan lineStamp)
 {
     return(lineStamp < LastLogLineStamp &&
            ParsingHelper.AreMoreThanOneHourAppartOnSameDay(lineStamp, LastLogLineStamp));
 }