示例#1
0
        public string[] ParseStringToArrayObject(string line)
        {
            string[] result;

            LineLog logData = new LineLog();

            result = logData.ParseStringToArrayObject(line);

            return(result);
        }
示例#2
0
        public static DictLog ParseDictionaryLog(DirectoryInfo subDirLog)
        {
            DictLog dictLog = new DictLog();

            // 6d184c14-f352-49bd-9baa-740acf9eca79
            string patternGUID = "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$";
            Regex  regex       = new Regex(patternGUID);

            // разберем словарь ЖР
            foreach (FileInfo file in subDirLog.GetFiles("*.lgf"))
            {
                // разрешаем запись другим потокам
                using (var fstream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    using (StreamReader sreader_dict = new StreamReader(fstream))
                    {
                        // первые 2 строки служебные
                        // 1 тип лога 1CV8LOG(ver 2.0)
                        // 2 идентификатор базы 28319a74-e5ca-487b-bd0d-c9207a1dc5f0

                        string lineDictLog = "";

                        while (!sreader_dict.EndOfStream)
                        {
                            string line = sreader_dict.ReadLine();

                            // заголовки пропускаем
                            if (line.Contains("1CV8LOG(ver 2.0)") || (regex.Matches(line).Count != 0))
                            {
                                continue;
                            }

                            //TODO: есть похожий метод в LogRecordProcessing, подумать над их объединением
                            if (ThisNewLineDictLog(lineDictLog) && ThisEndLineDictLog(lineDictLog) && lineDictLog.Length != 0)
                            {
                                // собрали строку лога, разберем ее
                                try
                                {
                                    LineLog  lineLog = new LineLog();
                                    string[] arrLine = lineLog.ParseStringToArrayObject(lineDictLog);
                                    addRecordDictLog(arrLine, dictLog);
                                    // обработали прошлую строку, обновим чтоб текущая обработалась при следующей итерации
                                    lineDictLog = line;
                                }
                                catch (Exception e)
                                {
                                    string error = e.Message + " record log:" + line;
                                    Log.AddRecord("DicLogProcessing", error);
                                }
                            }
                            else
                            {
                                lineDictLog += line;
                            }
                        }

                        // обработаем хвост
                        if (lineDictLog.Length != 0)
                        {
                            try
                            {
                                LineLog  lineLog = new LineLog();
                                string[] arrLine = lineLog.ParseStringToArrayObject(lineDictLog);
                                addRecordDictLog(arrLine, dictLog);
                            }
                            catch (Exception e)
                            {
                                string error = e.Message + " record log:" + lineDictLog + "; Файл логов " + file.FullName;
                                Log.AddRecord("DicLogProcessing", error);
                            }
                        }
                    }
            }

            return(dictLog);
        }