Example #1
0
        public static void ReadLog(FileChanged fc)
        {
            var fn = fc.FoundFile;
            var fs = new FileStream(fn, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

            fs.Seek(fc.Length, 0);
            using (StreamReader sr = new StreamReader(fs))
            {
                //Skip(sr, Convert.ToInt32(fc.Lines));
                while (sr.Peek() >= 0)
                {
                    string line = sr.ReadLine().CleanString();
                    var    data = line.Split(' ');
                    Console.WriteLine($"{fc.Prefix} :: {line}");
                    bool clr = false;
                    foreach (string d in data)
                    {
                        if (d.ToLower() == "clr" || d.ToLower() == "clear" || d.ToLower() == "status" || d == "0")
                        {
                            clr = true;
                        }
                    }
                    if (!clr)
                    {
                        IEnumerable <string> data6 = data.Where(a => a.Length == 6);
                        foreach (string d in data6)
                        {
                            Check.checkSystems(d, fn, fc.Prefix, line);
                        }
                    }
                }
            }
            fs.Dispose();
            //return Task.CompletedTask;
        }
Example #2
0
        protected virtual void OnFileChanged(FileChanged e)
        {
            EventHandler <FileChanged> handler = fileChanged;

            if (handler != null)
            {
                handler(this, e);
            }
        }
Example #3
0
        private void StartMonitor(Object stateInfo)
        {
            foreach (var fi in monitorFiles)
            {
                Console.WriteLine($"Monitoring: {fi.fullName}");
            }

            DateTime dtkeep = DateTime.Now;

            while (threadMonitor)
            {
                Thread.Sleep(500);
                foreach (var di in dir.GetFiles())
                {
                    if (monitorFiles.Exists(a => a.fullName == di.FullName))
                    {
                        var lfi = monitorFiles.FirstOrDefault(a => a.fullName == di.FullName);
                        lfi.Created = di.CreationTimeUtc;
                        long currentLength;
                        using (var fs = new FileStream(lfi.fullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)){
                            currentLength = fs.Length;
                        }
                        if (lfi.firstCheck && lfi.length != currentLength)
                        {
                            // TODO activate event
                            Debug.WriteLine($"file changed: {lfi.prefix}");
                            var fc = new FileChanged(lfi.fullName, lfi.length, lfi.prefix);
                            Debug.WriteLine($"Reading: {lfi.name} lines: {lfi.length}  newlines{currentLength - lfi.length}  fullName: {lfi.fullName}");
                            lfi.length = currentLength;

                            //await.Task.Run(Read.ReadLog(fc));
                            // Read.ReadLog(fc);
                            OnFileChanged(fc);
                        }
                        lfi.length     = currentLength;
                        lfi.firstCheck = true;
                        lfi.lastWrite  = di.LastWriteTimeUtc;
                        lfi.prefix     = GetFilePrefix(di.Name);

                        if (lfi.lastWrite < DateTime.UtcNow.AddDays(-1))
                        {
                            monitorFiles.Remove(lfi);
                            UpdateLogPool();
                        }
                    }
                }

                if (DateTime.Now.AddMinutes(-5) > dtkeep)
                {
                    dtkeep = DateTime.Now;
                    UpdateLogPool();
                }
            }
        }
Example #4
0
 static void EventFileChanged(object sender, FileChanged args)
 {
     Read.ReadLog(args);
 }