15.12.2017
Эффективная Навигация М2М
Меню сайта
Категории раздела
BNComplex работа с сервером [13]
Приемы, методы, дополнительное ПО
Форма входа
Вход через Google
Вход через Вконтакте
Вход через Facebook
Партнеры
Реклама

BNComplex: Выделяем блоки в логах посредством визуальных эффектов

Раскраска логов посредством скрипта vbs и RegExp

Для тех, кому не хочется читать, а сразу перейти к результату - вот ссылка на файлы.

Данная статья расскажет о том, как использовать регулярные выражения (RegExp) для повышения наглядности логов, в частности, на примере BNComplex. Приводится ссылка на обучающие документы, приводятся примеры использования, составления выражений.

Периодически, мне по роду своей деятельности приходится просматривать логи различных программ (CyberFleet, BNComplex), дабы выяснить что же случилось в работе (в том числе искать сбои). Хорошо, когда искомые строки редки, и быстро находятся поиском среди нескольких тысяч записей данных. Но периодически, приходится читать и слабо структурированные данные, где выделение блоков не очевидно, а визуальный поиск данных бывает затруднен.

И давно уже руки чесались как-то визуально выделить часто искомую информацию среди обильного множества текста. Самым быстрым в плане реализации решением мне показалось добавить цветовые схемы раскраски данных/блоков.

Ну например, что бы было примерно вот так (да-да, это как раз конечный результат):



Используя опыт работы с регулярными выражениями нашел, что кроме поиска текста, они так же позволяют и его заменять.


Для опробования методики родился маленький скрипт на vbs (v.01), который позволял применять к журнала работы TCP Gate службы последовательно несколько выражений. Результат его работы как раз виден на рисунке сверху.

Его недостатками было то, что он содержал весь код замены внутри себя, что не очень подходило для быстрого добавления новых шаблонов, и ориентирование его на работу с несколькими типами файлов/логов.

Посему родился второй вариант скрипта по замене строк на основании регулярных выражений (v.2), который единым скриптом позволяет применять форматирование к разным типам логов, передавая имя файла с шаблонами в качестве параметра.

Скрипт последовательно применяет регулярные выражения к строке, определяя на html оформление искомых блоков.
Соответственно, для просмотра результатов требуется какой-то просмоторщик html фалов (хотя бы просто браузер).

Скрипт основан на методе RegExp.repace (), позволяющий производить замену блоков/group в выражении на другую.

Методика составления своих шаблонов регулярных выражений.

0. Смотрим уже указанное видео, читаем описание скрипта - если не поняли, читаем дальше.
1. Откроем ссылку http://gskinner.com/RegExr/
2. Выберем закладку Replace
3. Заменим текст в окне на тот, который будет подвергаться анализу (он будет нами использоваться как пример).
Для примера попробуем выделить блоки в журнале poslog, содержащие данные о координатах от навигационных терминалов (описание шаблонов BNComplex).

4. В первой строке  (где \be(\w*)s\b) будем описывать какие блоки/группы мы ищем в тексте
5. Во второй строке (где [[$&$&]]) на что именно следует менять текст

Задача-пример №1 - выделить синим цветом блок информации о координатах
Решение:
Разобьем наши строки на три группы/блока:
1. Все что до координат
2. Сами координаты
3. Все что после координат
все что до и после, можно сразу обозначить как (.*)
а вот сами координаты нужно будет найти. Благо для их поиска достаточно найти два идущих подряд символа "|"
вот с этого и начнем. Так как символ "|" используется для обозначения в самих выражениях RegExp, то перед ним нужно 
установить \, т.е. пишем в строке поиска "\|" два раза
в строке: "\|\|"

сразу видим, что подсвечены соответствующие символы.
Теперь нужно разобраться с числами дальше.
Для обозначения числа воспользуемся сокращением "\d". Так как количеств цифр целой части может быть от одной до 3-ех, то "\d{1,3}"
в строке: "\|\|\d{1,3}"

далее идет точка - разделитель дробной части, так как точка используется как сокращение в RegExp, то перед ней ставим \
в строке:"\|\|\d{1,3}\."

далее идет 6 цифр. это "\d{6}"
в строке: "\|\|\d{1,3}\.\d{6}"

т.е. строка "d{1,3}\.\d{6}" найдет нам цифры, разделенные запятой, перед ней от 1-ой до 3-ех, а после ровно 6.
далее нам уже знакомый символ "|", а потом опять блок координат. Можно скопировать нужную последовательность с начала строки - мы ее уже описали
в строке "\|\|\d{1,3}\.\d{6}\|\d{1,3}\.\d{6}"

почти все. Нужно проверить, что координаты могут быть и отрицательные. - в одну из строк в образце добавте минусы перед числами, например вот так
||53.249980|-40.249468|
||-53.249753|40.249222|

ага. Наши строки, где есть минус перед координатами не выделились - надо менять шаблон
для этого, перед "\d{1,3}" добавим "\-?"  - т.е.  перед должен идти "минус" (но может и не идти - в данном случае ? означет {0,1} т.е. от нуля до одного указанного символа). Операцию нужно провести два раза (две же координаты)
в строке "\|\|\-?\d{1,3}\.\d{6}\|\-?\d{1,3}\.\d{6}"

надо это все оформить как группу - для этого просто заключим в кавычки
в строке "(\|\|\-?\d{1,3}\.\d{6}\|\-?\d{1,3}\.\d{6})"

надо еще добавить группы "все что слева, все что справа", для этого слева и справа добавляем (.*)
в строке "(.*)(\|\|\-?\d{1,3}\.\d{6}\|\-?\d{1,3}\.\d{6})(.*)"

видим внизу, что групп стало три. теперь. когда мы обозначили наши группы, можно их выделять. Будем со 2-ой строкой - чем меняем
Для начала просто напишем там все наши три группы
В строке замены "$1$2$3"

В окне результата пока пишите будет и выведена начальная строка, ибо она и состоит полностью из этих трех групп. Для цветового выделения воспользуемся html тегом <font>, заключив в него группу/блок 2
В строке замены "$1<font color=green>$2</font>$3"

Ну вот и все. Если полученный новый файл сохраним как HTML, то при его открытии будем видеть выделенный блок координат.
Как вы уже поняли, блоки можно поменять местами, или даже забыть некоторые из них
В строке замены "$3$2$1"

Остается только две полученных строки - строка шаблона, и строка замены сохранить в файл последовательно.
Теперь данный файл с этим шаблоном можно использоваться для обработки текста.

Вообщем, попугайчик стал цветным :)





Источник: ГЛОНАСС Тамбов, BNComplex, vbs, RegExp, регулярные выражения, форматирование, html, CyberFleet
Похожие материалы
Категория: BNComplex работа с сервером | Добавил: logoff (05.06.2012) | Автор: Бондарь Михаил
Просмотров: 1029 | Теги: логи, BNComplex, vbs, регулярные выражения, ГЛОНАСС Тамбов, журналы, Раскраска, автоматизация, RegExp | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
TOP 10 Популярное
1 Оборудование> Гранит-Навигатор 4.14
2 Оборудование> Абонентский терминал M2M Cyber GLX
3 Оборудование> Гранит-Навигатор 4.14: Настройка терминала
4 Прочее> "Красные" против "Синих" - статистка космических запусков России (СССР) и США
5 CyberFleet, CrossPoint> CyberFleet: Переустановка CyberFleet
6 CyberFleet, CrossPoint> КиберФлит: Учет топлива при помощи датчиков
7 Оборудование> M2M Cyber GLX: отправка команд
8 Прочее> SQL: CyberFleet: Занятие №3 Объединение таблиц Часть 1/2 (теория, inner join)
9 CyberFleet, CrossPoint> КиберФлит: Причины расхождения пробега по данным одометра и карте
10 CyberFleet, CrossPoint> КиберФлит: Подключаем карту Google
Наш опрос
Оцените этот сайт
Всего ответов: 31
LogOff © 2017
Сайт создан в системе uCoz Рейтинг GPS Клуба. GPS навигаторы. GPS мониториг. GPS трекеры. ГЛОНАСС