/// <summary>
        /// Gets the log file names and dates from the collection of filenames and sorts them into date order
        /// </summary>
        /// <param name="filenames">The file names to process</param>
        /// <returns>A sorted list of log file items</returns>
        public IEnumerable <LogFileItem> GetDateSortedLogFileDataFromFileNames(IEnumerable <string> filenames)
        {
            if (filenames == null)
            {
                throw new ArgumentNullException("filenames");
            }
            ;

            var files = new List <LogFileItem>();

            foreach (var filePath in filenames)
            {
                string   fileName = System.IO.Path.GetFileName(filePath);
                DateTime logDate  = GetLogFileDate(filePath);

                var logFileItem = new LogFileItem(logDate.Date, filePath)
                {
                    IsCourier   = IsCourierLog(fileName),
                    MachineName = GetMachineName(fileName)
                };

                files.Add(logFileItem);
            }

            var sortedFiles = files.OrderByDescending(x => x.Date);

            return(sortedFiles);
        }
示例#2
0
        public void _0003_CreatingNewLog()
        {
            var          logFileName = DateTime.Now.ToString("yyMMdd HHmmss");
            ILogFileItem log         = new LogFileItem(LogLocation, ProjectName, logFileName);

            Assert.IsTrue(System.IO.File.Exists(log.Path), "Nem hozta létre a log fájlt.");
        }
        private void loglistbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (loglistbox.SelectedIndex == -1)
            {
                return;
            }
            LogFileItem log = (LogFileItem)loglistbox.SelectedItem;

            traveltimelistbox.Visibility    = System.Windows.Visibility.Collapsed;
            VMSlistbox.Visibility           = System.Windows.Visibility.Collapsed;
            Detectorslistbox.Visibility     = System.Windows.Visibility.Collapsed;
            traveltimedetailsbox.Visibility = System.Windows.Visibility.Collapsed;
            VMSdetailsbox.Visibility        = System.Windows.Visibility.Collapsed;
            Detectorsdetailsbox.Visibility  = System.Windows.Visibility.Collapsed;
            switch (log._type)
            {
            case LogFileItemType.TravelTime:
                showTravelDetails(traveltimedetailsbox, SearchInList(log, traveltimelistbox));
                break;

            case LogFileItemType.VMSG:
                showVMSDetails(VMSdetailsbox, SearchInList(log, VMSlistbox));
                break;

            case LogFileItemType.DetectorData:
                showDetectorDetails(Detectorsdetailsbox, SearchInList(log, Detectorslistbox));
                break;
            }
        }
示例#4
0
        public void _0010_NewLogFile_Add_LogFileCollection()
        {
            var logFileName = "_0007_NewLogFile_Add_LogFileCollection" + Guid.NewGuid().ToString();
            var newLog      = new LogFileItem(LogLocation, ProjectName, logFileName);

            Assert.IsTrue(System.IO.File.Exists(newLog.Path), "Nem hozta létre a log fájlt.");
            newLog.Messages.AddToStorageBegin();
            for (int i = 0; i < 100; i++)
            {
                newLog.Messages.AddToStorage("Proba", DateTime.Now, MessageDirection.Received, ArbitrationIdType.Standard, 0x0FF, false, new byte[] { 0x00, 0x01, 0x02, 0x03, 0x05 }, "nincs", "nincs");
            }
            newLog.Messages.AddToStorageEnd();

            var logFiles = new LogFileCollection();

            logFiles.Load(LogLocation, ProjectName);
            AutoResetEvent completeEvent = new AutoResetEvent(false);

            logFiles.ListChanged += (o, e) =>
            {
                if (e.ListChangedType == ListChangedType.ItemAdded)
                {
                    completeEvent.Set();
                }
            };
            logFiles.Add(newLog);
            Assert.True(completeEvent.WaitOne(1000), "Nem j0tt meg az esény az új logfile beszurásáról.");
        }
示例#5
0
        private static void TestIsCorrectFormat(LogFileItem logItem, DateTime expectedDate, string expectedPath, string expectedMachineName)
        {
            TestContext.WriteLine("Testing: " + logItem);

            Assert.That(logItem.Date.Date == expectedDate.Date);
            Assert.That(Path.GetFileName(logItem.Path) == expectedPath);
            Assert.That(logItem.MachineName == "helloworld.2016-12-20.2.txt");
        }
示例#6
0
 private void MoveMessageIntoQueue(LogFileItem fi)
 {
     try
     {
         // move the message into queue
         StringBuilder sb = fi.Builder;
         fi.Queue.Enqueue(sb.ToString());
         sb.Clear();
     }
     catch (Exception ex)
     {
         this.WriteExceptionToEventLog(ex);
     }
 }
示例#7
0
        public void _0009_PropretyTest()
        {
            ILogFileCollection logfiles = new LogFileCollection();

            logfiles.ProgressChanged += (o, e) => { Console.WriteLine("Percent:" + e.ProgressPercentage + "%" + " Message:" + e.UserState); };
            logfiles.Load(LogLocation, ProjectName);

            var logFileName = DateTime.Now.ToString("yyMMdd HHmmss") + "_0006_PropretyTest_" + Guid.NewGuid().ToString();

            ILogFileItem log = null;

            if (!System.IO.File.Exists(LogLocation + logFileName + ".s3db"))
            {
                log = new LogFileItem(LogLocation, ProjectName, logFileName);
                Assert.IsTrue(System.IO.File.Exists(log.Path), "Nem hozta létre a log fájlt.");
                log.Messages.AddToStorageBegin();
                for (int i = 0; i < 2; i++)
                {
                    log.Messages.AddToStorage("Proba", DateTime.Now, MessageDirection.Transmitted, ArbitrationIdType.Standard, 0x0FF, false, new byte[] { 0x00, 0x01, 0x02, 0x03, 0x05 }, "nincs", "nincs");
                    log.Messages.AddToStorage("Proba", DateTime.Now, MessageDirection.Received, ArbitrationIdType.Standard, 0x0FF, false, new byte[] { 0x00, 0x01, 0x02, 0x03, 0x05 }, "nincs", "nincs");
                }
                log.Messages.AddToStorageEnd();
            }



            AutoResetEvent completeEvetn = new AutoResetEvent(false);

            log.Statistics.PropertyChanged += (o, e) =>
            {
                Assert.True(e.PropertyName == "ReceivedMessageCount" || e.PropertyName == "TransmittedMessageCount");
                completeEvetn.Set();
            };

            var logFile = (logfiles as LogFileCollection).FirstOrDefault(n => n.Name == logFileName);

            log.Load();

            Assert.False(completeEvetn.WaitOne(1000) == false, "Nem jött esemény.");

            Assert.AreEqual(2, log.Statistics.ReceivedMessageCount);
            Assert.AreEqual(2, log.Statistics.TransmittedMessageCount);

            foreach (var item in log.Messages)
            {
                Console.WriteLine(item.ToString());
            }
        }
示例#8
0
        private void PushToQueue(string fileName, string message, int level)
        {
            try
            {
                if (_disableLogging)
                {
                    return;
                }

                // format the message
                string formattedMessage = this.FormatContent(message);

                // put the contents into string buffer
                lock (_contentLock)
                {
                    // create the file queue
                    if (!_fileLogItems.ContainsKey(fileName))
                    {
                        this.InitListenForFile(fileName);
                    }

                    // append the data to buffer
                    LogFileItem   fi = _fileLogItems[fileName];
                    StringBuilder sb = fi.Builder;
                    sb.AppendLine(formattedMessage);

                    // immediate logging
                    if (_immediateLogging)
                    {
                        this.MoveMessageIntoQueue(fi);
                    }
                    else
                    {
                        // move the content to file only if exceeds length
                        if (sb.Length > _logBufferSize)
                        {
                            this.MoveMessageIntoQueue(fi);
                        }
                    }
                    _dtQueued = DateTime.Now;
                }
            }
            catch (Exception ex)
            {
                this.WriteExceptionToEventLog(ex);
            }
        }
示例#9
0
        public void _0011_NewLogFileModifyDescription()
        {
            var logFileName = "_0008_NewLogFileModifyDescription" + Guid.NewGuid().ToString();
            var newLog      = new LogFileItem(LogLocation, ProjectName, logFileName);

            Assert.IsTrue(System.IO.File.Exists(newLog.Path), "Nem hozta létre a log fájlt.");

            string expect = "Hello World";

            newLog.Info.Description = expect;

            Assert.AreEqual(expect, newLog.Info.Description);

            var loadLog = new LogFileItem(newLog.Path);

            loadLog.Load();
        }
示例#10
0
        public void _0004_Instert_StopWatch()
        {
            var          logFileName = DateTime.Now.ToString("yyMMdd HHmmss") + "_0003_CreatingNewLog_Insert";
            ILogFileItem log         = new LogFileItem(LogLocation, ProjectName, logFileName);

            Assert.IsTrue(System.IO.File.Exists(log.Path), "Nem hozta létre a log fájlt.");

            var watch = new Stopwatch();

            watch.Start();
            log.Messages.AddToStorageBegin();
            for (int i = 0; i < 1000; i++)
            {
                log.Messages.AddToStorage("Proba", DateTime.Now, MessageDirection.Received, ArbitrationIdType.Standard, 0x0FF, false, new byte[] { 0x00, 0x01, 0x02, 0x03, 0x05 }, "nincs", "nincs");
            }
            log.Messages.AddToStorageEnd();
            watch.Stop();
            Console.WriteLine("Beirás ideje:" + (watch.ElapsedMilliseconds).ToString() + "ms");
        }
示例#11
0
        public void _0007_CreateNew_Insert_1000000_Record()
        {
            for (int repeat = 0; repeat < 1; repeat++)
            {
                var          logFileName = "_" + repeat.ToString("0000") + System.Reflection.MethodBase.GetCurrentMethod().Name;
                ILogFileItem log         = new LogFileItem(LogLocation, ProjectName, logFileName);
                Assert.IsTrue(System.IO.File.Exists(log.Path), "Nem hozta létre a log fájlt.");

                var watch = new Stopwatch();
                watch.Start();
                log.Messages.AddToStorageBegin();
                for (int i = 0; i < 1000000; i++)
                {
                    log.Messages.AddToStorage("Proba", DateTime.Now, MessageDirection.Received, ArbitrationIdType.Standard, 0x0FF, false, new byte[] { 0x00, 0x01, 0x02, 0x03, 0x05 }, "nincs", "nincs");
                }
                log.Messages.AddToStorageEnd();
                watch.Stop();
                Console.WriteLine("Beirás ideje:" + (watch.ElapsedMilliseconds).ToString() + "ms");
            }
        }
    public static List <LogFileItem> ParseLogFile(string path)
    {
        List <LogFileItem> result = new List <LogFileItem>();
        //in a real scenario, this code should have a lot more error checks
        string       line;
        StreamReader strRead = new StreamReader(path);

        while ((line = strRead.ReadLine()) != null)
        {
            string[]    columns = line.Split('|');
            LogFileItem item    = new LogFileItem();
            item.IpAddress = columns[0];
            item.Sysname   = columns[1];
            item.Username  = columns[2];
            item.Text      = columns[3];
            //this assumes that the dateTime column is parsable by .net
            item.DateTime = DateTime.Parse(columns[4]);
            result.add(item);
        }
        return(result);
    }
 public static List<LogFileItem> ParseLogFile(string path)
 {
   List<LogFileItem> result = new List<LogFileItem>();
   string line;
   StreamReader strRead = new StreamReader(path);
   {
     int row = 0;
 
     while ((line = strRead.ReadLine()) != null)
     {
       string[] columns = line.Split('|');
       LogFileItem item = new LogFileItem();
       item.IpAddress = columns[0];
       item.Sysname = columns[1];
       item.Username = columns[2];
       item.Text = columns[3];
       //this assumes that the dateTime column is parsable by .net
       item.DateTime = DateTime.Parse(columns[4]);
       }
       row++;
     }
   }
        private TunnelListItem SearchInList(LogFileItem logitem, ListBox list)
        {
            TunnelListItem tempitem = null;

            list.Items.Refresh();
            foreach (TunnelListItem item in list.Items)
            {
                if (logitem._newtime.Ticks == item._newtime.Ticks)
                {
                    tempitem          = item;
                    list.SelectedItem = item;
                    list.ScrollIntoView(item);
                    break;
                }
            }
            if (list.Items.Count > 0)
            {
                list.Visibility = System.Windows.Visibility.Visible;
            }

            return(tempitem);
        }
示例#15
0
        public void _0008_CreateNew_and_Load()
        {
            /*Egyedi fáljnév*/
            var          logFileName = "_0005_CreateNew_and_Load" + Guid.NewGuid().ToString();
            ILogFileItem newLog      = null;

            if (!System.IO.File.Exists(LogLocation + logFileName + ".s3db"))
            {
                newLog = new LogFileItem(LogLocation, ProjectName, logFileName);
                Assert.IsTrue(System.IO.File.Exists(newLog.Path), "Nem hozta létre a log fájlt.");
                newLog.Messages.AddToStorageBegin();
                for (int i = 0; i < 1000; i++)
                {
                    newLog.Messages.AddToStorage("Proba", DateTime.Now, MessageDirection.Received, ArbitrationIdType.Standard, 0x0FF, false, new byte[] { 0x00, 0x01, 0x02, 0x03, 0x05 }, "nincs", "nincs");
                }
                newLog.Messages.AddToStorageEnd();
            }

            var loadedLog = new LogFileItem(newLog.Path);

            loadedLog.ProgressChanged += (o, e) => { Console.WriteLine("Percent:" + e.ProgressPercentage + "%" + " Message:" + e.UserState); };
            loadedLog.Load();
            Assert.AreEqual(1000, loadedLog.Messages.Count, "Beirt és várt üzenetek száma nem egyezik.");
        }
        private void CreateDateLogTreeItem(string id, FormDataCollection qs, TreeNodeCollection tree, LogFileItem logFile)
        {
            string title = logFile.Date.ToString("yyyy-MM-dd");
            string path  = HttpUtility.UrlEncode(System.IO.Path.GetFileName(logFile.Path));

            tree.Add(CreateTreeNode(path, id, qs, title, "icon-notepad"));
        }
 private void MoveMessageIntoQueue(LogFileItem fi)
 {
     try
     {
         // move the message into queue
         StringBuilder sb = fi.Builder;
         fi.Queue.Enqueue(sb.ToString());
         sb.Clear();
     }
     catch (Exception ex)
     {
         this.WriteExceptionToEventLog(ex);
     }
 }
        private void CreateDateLogTreeItem(string id, FormDataCollection qs, TreeNodeCollection tree, LogFileItem logFile)
        {
            string title = logFile.Date.ToString("yyyy-MM-dd");

            if (!String.IsNullOrEmpty(logFile.MachineName) && !logFile.MachineName.InvariantEquals(Environment.MachineName))
            {
                title += String.Format(" ({0})", logFile.MachineName);
            }

            if (logFile.IsCourier)
            {
                title += " (C)";
            }

            string path = HttpUtility.UrlEncode(System.IO.Path.GetFileName(logFile.Path));

            tree.Add(CreateTreeNode(path, id, qs, title, "icon-notepad"));
        }