Exemple #1
0
        public static LogFileProvider Open(string filePath, BackgroundWorker worker, DoWorkEventArgs e)
        {
            try
            {
                logger.DebugFormat("Parsing log events from file {0}", filePath);
                LogFileProvider logs = new LogFileProvider();
                logs.location = filePath;

                LogFileProvider.read(logs, worker, e);

                return(logs);
            }
            catch (Exception ex)
            {
                throw new OpenLogFileException(filePath, ex);
            }
        }
Exemple #2
0
        private static bool read(LogFileProvider logs, BackgroundWorker worker, DoWorkEventArgs e)
        {
            DataTable t = logs.dataSet.Tables["LogData"];

            using (StreamReader rd = new StreamReader(new FileStream(logs.Location, FileMode.Open, FileAccess.Read, FileShare.Delete)))
            {
                long fileSize = rd.BaseStream.Length;
                using (new Tools.PerfMonitor(string.Format("Time taken to load {0} ({1} kb)", logs.Location, fileSize / 1024)))
                {
                    if (logs.lastPosition > fileSize)
                    {
                        return(false);
                    }

                    rd.BaseStream.Position = logs.lastPosition;
                    int      i        = logs.LastLine;
                    double   charRead = 0;
                    logEvent l        = new logEvent();
                    while (!rd.EndOfStream)
                    {
                        string   lStr = rd.ReadLine();
                        logEvent nl   = parsingRules.ParseLine(lStr, i++);
                        if (nl.IsValid)
                        {
                            addRow(t, l);
                            l = nl;
                        }
                        else
                        {
                            l.Message += ("\r\n" + lStr);
                        }

                        charRead += lStr.Length;

                        int progress = (int)Math.Truncate((charRead / fileSize) * 100);

                        if (worker != null)
                        {
                            worker.ReportProgress(progress);
                            if (worker.CancellationPending)
                            {
                                t.RejectChanges();
                                e.Cancel = true;
                                return(false);
                            }
                        }
                    }

                    addRow(t, l);
                    t.AcceptChanges();

                    if (e != null)
                    {
                        e.Result = logs;
                    }
                    logs.lastPosition = rd.BaseStream.Position;
                    logs.lastLine     = i;
                }

                logs.isValid = true;
                logs.status  = LogProviderStatus.Online;
            }
            return(true);
        }
Exemple #3
0
 public static LogFileProvider Open(string filePath)
 {
     return(LogFileProvider.Open(filePath, null, null));
 }
Exemple #4
0
 public void Watch(BackgroundWorker worker, DoWorkEventArgs e)
 {
     logger.DebugFormat("Tailing file {0}", this.Location);
     LogFileProvider.read(this, worker, e);
 }