Служба логирования RedLabel

Назначение и принципы работы

Модуль RedLabel (rlsrvc.exe) записывает сообщения в систему трассировки времени исполнения ПроАТМ и ПроATM/XFS.

С целью обеспечения контроля объема хранимых трасс, сообщения в трассу записываются в соответствии с текущими фильтрами записей. Фильтр может быть установлен как индивидуально для источника записей, так и для всего комплекса в целом. В качестве признака, по которому осуществляется фильтрация записи, используется так называемый уровень логирования. Под уровнем логирования подразумевается некоторое целое неотрицательное целое. Чем выше уровень, тем выше степень детализации сообщения. По умолчанию, постоянно хранятся сообщения с уровнем от 0 до 99 [0,99].

Всего поддерживается три типа записей: критичная ошибка, предупреждение и информационное сообщение.

Критичная ошибка записывается в трассу незамедлительно, помимо очереди, но не может содержать никакой информации кроме числового идентификатора кода ошибки. Наиболее распространенной практикой применения сообщения типа «критичная ошибка» является обработка исключительных ситуаций, приводящих к аварийному завершению работы приложения. Критичные ошибки не фильтруются.

Предупреждение позволяет выделить некое сообщение. Предупреждения обрабатываются в порядке общей очереди и подчиняются установленным фильтрам. Наиболее распространенной практикой применения предупреждений является фиксация не фатальных сбоев, критичных точек ветвления и т.п.

Тип «информационное сообщение» используется чаще всего. Информационные сообщения обрабатываются в порядке общей очереди и подчиняются установленным фильтрам. Они используются для трассировки текущего состояния компонента, причин принятия того или иного решения и т.п.

В результате работы создаются архивные файлы следующих видов:

  • YYYY_MM_DD_NNNNN.arch;

  • YYYY_MM_DD_NNNNN_info.xml;

Распаковать архивы можно следующими способами:

  1. С помощью команд rlsrvc.exe /u YYYY_MM_DD_NNNNN.arch и rlsrvc.exe /UNPACK YYYY_MM_DD_NNNNN.arch.

  2. С помощью утилиты DBDump (входит в состав ПроАТМ).

Пример структуры xml-файла:

<?xml version="1.0" encoding="UTF-8" ?>
<RedLabelArchiveInfo>
<FirstRecord timestamp="2009.09.29 14:04:38.857" />
<LastRecord timestamp="2009.09.30 21:15:47.004" />
<RecordsCount val="90635" />
</RedLabelArchiveInfo>

Здесь:

  • <FirstRecord/> – время первой записи в базе архива.

  • <LastRecord/> – время последней записи в базе архива.

  • <RecordsCount/> – суммарное количество записей в базе архива.

Для оптимизации работы на устаревшем оборудовании используйте параметр реестра suppress_levels_monitoring_thread в разделе [HKEY_LOCAL_MACHINE\SOFTWARE\FS365\RedLabel]. Данный параметр включает и отключает запуск потоков мониторинга настроек уровней логирования внутри клиентов логирования, позволяет незначительно уменьшить число одновременно работающих потоков. Возможные значения: 0 – включить (по умолчанию), 1 – отключить. Пример:

[HKEY_LOCAL_MACHINE\SOFTWARE\FS365\RedLabel]
"suppress_levels_monitoring_thread"="0"

Если модуль rlsrvc не запущен, то журналы в виде текстовых файлах записываются в папке FS365\XFS\lostlogs, если установлено только ПО ПроАТМ/XFS, или FS365\Applications\lostlogs, если установлено ПО ПроАТМ.

Для работы с журналом времени исполнения программ предназначена утилита RLView. Утилита может просматривать как локальные, так и удаленные БД.

Запуск и остановка службы

Если в системе установлено и ПО ПроАТМ и ПО ПроАТМ/XFS, то ПроАТМ запускает RedLabel автоматически. При запуске RedLabel в области уведомлений появится значок redlabel. Если на УС установлено только ПО ПроАТМ/XFS, то запуск RedLabel прописывается отдельно до запуска ПроАТМ/XFS. RedLabel запускается командой:

C:\FS365\Redlabel\rlsrvc.exe

Способы завершения работы RedLabel:

  1. Закрыть RedLabel из области уведомлений:

    ../../_images/rlview-redlabel_tray.jpg
  2. Закрыть RedLabel с помощью команды:

    rlsrvc.exe /SHUTDOWN
    
  3. Завершить процесс rlsrvc.exe принудительно:

    C:\FS365\XFS\shqShutdown.exe REDLABEL
    

    Внимание

    После получения команды shqShutdown.exe REDLABEL RedLabel попытается корректно завершить свою работу. Если это не удастся, то процесс rlsrvc.exe будет удален и сообщения, которые RedLabel не успел загрузить,будут потеряны безвозвратно.

  4. Приостановить работу сервиса:

    rlsrvc.exe /pause
    

    Результат выполнения команды:

    • 0 – успешно;

    • 5 – сервис rlsrvc недоступен;

    • 6 – не удалось получить подтверждение о выполнении запроса на приостановку/возобновление работы сервиса в течение 30 секунд (ошибка ПО).

    Запустить работу сервиса после приостановки:

    rlsrvc.exe /resume
    

    Останавливать на время и возобновлять работу сервиса может любой пользователь ОС.

Графический интерфейс (RLView)

Запуск и завершение работы RLView

Для того, чтобы открыть RLView запустите файл RLView.exe. При первом запуске утилита по умолчанию попытается подключится к RedLabel на локальном компьютере. Если это удалось, то появится основное окно RLView с выборкой логов (рис. 1). Если подключится к RedLabel не удалось, то будет открыто пустое окно RLView (без таблицы).

Способы завершения работы RLView:

  1. Нажать в меню Файл > Выход.

  2. Нажать кнопку закрыть в верхнем правом углу основного окна RLView.

Внешний вид и управление RLView

../../_images/rlview-main_window.png

Рисунок 1. Основное окно RLView

Меню

  • Файл:

    • Новый – подключиться к другому серверу логирования (Ctrl + N).

    • Открыть файл (logs) – открыть logs-файл БД (Ctrl + I).

    • Закрыть – отлючиться от текущего сервера логирования.

    • Конфигурация – изменить настройки текущего сервера логирования (Ctrl + L).

    • Экспорт – выгрузить выборку логов в текстовый файл (Ctrl + T).

    • Параметры – настроить внешний вид выборки логов (Ctrl + P).

    • Выход – закончить работу с RLView (Alt + F4).

  • Запрос:

    • Выбрать базу – выбрать тип БД логов:

      • Ошибки – БД ошибок (Ctrl + E);

      • Предупреждения/Трассы – БД предупреждений и трасс (Ctrl + W).

    • Построить новый – открыть конструктор запросов (Alt + Ctrl + F2).

    • Редактировать последний – изменить последний выполненный запрос в конструторе (F4).

    • Редактировать имя и текст – изменить текст запроса, присвоить запросу имя и изменить его (F6).

    • Выполнить – выполнить запрос (F5).

    • Остановить – остановить выполнение запроса (Ctrl + Z).

  • Правка:

    • Копировать – копировать текст выделенной записи из выборки логов в буфер обмена (Ctrl + C).

    • Найти – найти текст, введенный в поле поиска по логам на панели инструментов (Ctrl + F). Поиск ведется по всем стобцам таблицы.

    • Найти далее (Shift + F3) и Найти предыдущее (F3) – найти вхождения искомого значения.

    • Установка/сброс закладки – установить/сбросить закладку на выбранной записи в выборке логов (Ctrl + F2).

    • Перейти к след. закладке – перейти к следующей закладке (F2).

    • Перейти к пред. закладке – перейти к предыдущей закладке (Shift + F2).

  • Вид – перемещение по главному окну RLView.

    • Перейти:

      • Краткое представление – переместить курсор в таблицу на запись выборки логов (Alt + T);

      • Полное представление – переместить курсор в поле guilabel:# подробной информации о записи (Alt + D);

      • Запрос – переместить курсор в строку запроса (Alt + Q);

      • Поиск – переместить курсор в строку поиска (Alt + F).

    • Полное представление – показать/скрыть подробную информацию о записи и строку состояния (F10).

  • Сервис:

  • Окно – выбрать тип отображения окон RLView, перейти к окну открытой БД из списка.

    • Каскадом – расположить окна каскадом;

    • Горизонтальная мозаика – расположить окна горизонтально;

    • Вертикальная мозаика – расположить окна вертикально;

    • список серверов.

  • О программе – показать окно с информацией о программе.

Панель инструментов

../../_images/rlview-toolbar.jpg

Рисунок 2. Панель инструментов RLView

  1. Открыть сервер.

  2. Открыть logs-файл БД.

  3. Конфигурировать сервер.

  4. Экспортировать записи в файл.

  5. Параметры приложения

  6. Выбрать базу данных ошибок.

  7. Выбрать базу данных предупреждений/трасс.

  8. Построить новый запрос.

  9. Редактировать последний запрос.

  10. Редактировать имя и текст запроса.

  11. Текст запроса.

  12. Выполнить запрос.

  13. Остановить выполнение запроса.

  14. Поле поиска по логам.

  15. Найти строку, указанную в поле поиска.

  16. Найти следующее включение и найти предыдущее включение.

Выборка логов

Краткое представление информации по выбранной записи логов.

Информация о записи

Полное представление информации по записи в выборке логов. Краткое представление отличается от полного представления информации лишь формой отображения, все поля идентичны. Текст любого сообщения, что особенно удобно для длинных сообщений, можно открыть в блокноте (Notepad.exe) с помощью кнопки Notepad. Отображение/сокрытие полного представления осуществляется при нажатии клавиши F10. При отключенной панели полного представления так же существует возможность сделать двойной щелчок мышью по нужной строке выборки, что приводит к открытию этой панели.

Строка состояния показывает количесто записей, отобранных по запросу, и другую дополнительную информацию.

Конструктор запросов

../../_images/rlview-query_designer_by_default.jpg

Рисунок 3. Окно конструктора запросов

  • Диапазоны – отобрать записи за указанный период.

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

    • Кнопка Дата из Clipboard – вставить дату и время, скопированные из лога в буфер обмена. После нажатия кнопки скопированная дата автоматически вводится в поля Дата с и по, а время – в поле Время с. В поле Время по вводится скопированное время плюс 2 сек.

    • Время с и Время по – Чтобы ввести/выбрать значение поля поставьте флагУказанное время имеет значение только, если указана дата. Есть возможность указать только дату начала или только дату окончания периода.

    • Кнопка -1 сек – уменьшить значение поля Время с на 1 секунду. Данная кнопка работает, если выставлены флаги Дата с и Время с.

    • Кнопка +1 сек – увеличить значение поля Время по на 1 секунду. Данная кнопка работает, если выставлены флаги Дата по и Время по.

  • За последние… – отобрать записи за последние n минут/часов/суток/недель/месяцев (по умолчанию – 1 минута). Количество и единицу времени следует указать в полях под переключателем.

  • Тип – задаются только для случаев, когда поиск ведется в базе Предупреждения/трассы. В этом случае осуществляется выбор типа записей, по которым будет сформирован запрос:

    • Все – поиск по типам «Предупреждение» и «Трассы»;

    • Предупреждения – поиск по типу «Предупреждение»;

    • Трассы – поиск по типу «Трассы».

  • Модуль – вводится маска, по которой будет осуществляться фильтрация записей лога по наименованию модуля. Имя каждого модуля содержит тип и наименование модели устройства. Их можно выбрать в выпадающем списке данного поля. Символ «_» или «?» заменяют собой один любой символ. Символ «%» или «*» подразумевает любое количество символов.

  • Уровень от и до – фильтр, позволяющий выбирать записи с определенным уровнем логирования.

  • Thread Id – фильтрация записей лога по идентификатору потока.

  • PID – фильтрация записей лога по идентификатору процесса.

  • Сообщение – вводится маска, по которой будут фильроваться записи лога по содержанию сообщения. Введенные маски запоминаются. Их можно выбрать в выпадающем списке данного поля.

  • Включить дамп двоичных данных – позволяет отобразить дампы памяти, которые привязаны к записям.

  • Кнопка OK – выполнить запрос с заданными параметрами.

  • Кнопка Cancel – сбросить параметры запроса и закрыть конструктор запросов.

Настройка RLView

../../_images/rlview-server_params.jpg

Рисунок 4. Окно конфигурции сервера логирования

В окне конифгурации сервера логирования настраиваются уровни логирования модулей для выбранного сервера. Путь в меню: Файл > Конфигурация.

Глобальные уровни логирования:

  • Трассируемые модули – модули, которые включены в список трассируемых модулей;

  • Нетрассируемые модули – все остальные модули.

В таблица «Трассируемые модули» определены уровни логирования отдельных модулей:

  • Модуль – исполняемый файл модуля;

  • Уровни логирования – уровни или диапазоны трасс/предупреждений, разрешенных к внесению в лог.

  • Кнопка Добавить – добавить новые трассируемые модули.

  • Кнопка Изменить – изменить уровень логирования модуля, выделенного в таблице.

  • Кнопка Удалить – исключить выделенный в таблице модуль из списка трассируемых.

../../_images/rlview-settings.jpg

Рисунок 5. Окно настройки параметров RLView

Путь в меню: Файл > Параметры.

Количество элементов сохраняемых списков:

  • Запросы – количество запросов, отображаемых в строке ввода на панели работы с запросами (в раскрывающемся списке).

  • Поиск – количество строк, отображаемых в строке ввода на панели поиска (в раскрывающемся списке).

  • Модули – количество строк, отображаемых в строке Модули в окне конструтора запросов (в раскрывающемся списке).

Данные запросов:

  • Кол-во записей в первой порции – для объемной выборки сервер первоначально передаст первые n записей, после этого продолжит формирование полной выборки и передачу записей по порциям клиенту.

  • Цвет нечетных строк таблицы – устанавливается цвет нечетных строк таблицы.

  • Цвет четных строк таблицы – устанавливается цвет четных строк таблицы.

  • Разделитель полей при экспорте – символ, который разделяет значения полей в записях при экспорте в текстовый файл.

Автозагрузка:

  • Сервер – выбор сервера логирования из раскрывающегося списка, открытие которого будет осуществляться автоматически при запуске утилиты RLView.

  • Ошибки/Предупреждения – выбор типа базы данных, открытие которой будет осуществляться автоматически при запуске утилиты RLView.

  • Запрос –ввод параметров запроса, который будет выполняться автоматически при запуске утилиты RLView. Запрос по умолчанию:

    SELECT * from logs LEFT JOIN dumps ON logs.id=dumps.id WHERE logs.id>((SELECT max(id) FROM logs)-1000)
    

Загрузка из файла:

  • Кол-во записей в первой порции – максимальное количество загружаемых записей из logs-файла. По умолчанию 15000 (используется, если не задан запрос в одноименном поле и не задано количество записей в первой порции в блоке «Данные запросов»).

На вкладке «Колонки» задаются параметры таблицы представления результатов запроса:

  • Кнопка Добавить – добавить колонку.

  • Кнопка Изменить – изменить ширину и описание колонки, выделенной в таблице.

  • Кнопка Удалить – удалить колонку.

  • Кнопки Вниз и Вверх – переместить колонку в таблице.

Внимание

Изменение настроек колонок таблицы повлечет за собой потерю результато последних запросов.

Примеры использования

Открыть logs-файл БД

  1. Нажмите в меню Файл > Открыть файл (logs) (Ctrl + I).

  2. В открывшемся окне выберите файл с расширением logs и нажмите кнопку Сохранить (Save).

    ../../_images/rlview-choose_file.png

    Рисунок 6. Окно выбора logs-файла

    Откроется выбранный файл БД. Одновременно можно открыть несколько файлов.

    ../../_images/rlview-file_has_opened.png

    Рисунок 7. Пример открытых logs-файлов

    Количество записей, загружаемых при открытии файла, ограничено. Их максимум определяется значениями полей Запрос и Кол-во записей в первой порции на вкладке «Общее» в окне «Параметры» по следующему алгоритму:

    1. В поле Запрос установлен флаг и введен запрос – используется количество записей, указанное в запросе (в запросе по умолчанию – 1000 записей).

    2. В поле Запрос не установлен флаг и/или не введен запрос – используется значения поля Кол-во записей в первой порции в блоке «Данные запросов» (по умолчанию 300 записей).

    3. В поле Запрос не установлен флаг и/или не введен запрос, не задано значение поля Кол-во записей в первой порции в блоке «Данные запросов» – используется значения поля Кол-во записей в первой порции в блоке «Запрос из файла» (по умолчанию 15000 записей).

Вычислить интервал между двумя событиями

Выделите в выборке логов две записи и нажмите в меню Сервис > Интервал времени (Ctrl + R). Вычисленное значение появится в строке состояния справа от количества записей. Если в выборке выделено больше двух записей, то интервал вычисляется между первой и последней выделенными записями.

../../_images/rlview-space_between_records.png

Рисунок 8. Пример результата вычисления интевала между событиями

Выгрузить результат выполнения запроса в текстовый файл

  1. Сформируйте и выполните запрос.

  2. Нажмите в меню Файл > Экспорт (Ctrl + T).

Исключить записи из выборки по шаблону

Шаблон представляет собой текстовый файл с последовательностями символов (подстроки). Одна строка файла – одна последовательнось символов. При применении шаблона выполняется поиск подстрок из файла в тексте сообщений. Записи с такими сообщениями исключаются из выборки.

Пример шаблона:

Monitoring::MonitoringTemplate::AsyncSendMessage
Xfs::Service::~Service()
CButtonControl::
axcontentmanager.dll
CEditString::Fire
Запущен Active-X компонент CButtonControl
Active-X компонент CButtonControl уничтожен
::InterprocessClient::
::CUralsibMonitoring::SendMonitoringMessage
CSPIRQsManager::AddRequest()
CSPIRQsManager::ProceedWithGetInfo()
::InPlaceDeactivate()

Порядок действий:

  1. Создайте или скопируйте шаблон.

  2. Нажмите пункт меню Сервис > Фильтрация по шаблонам… и выберите шаблон. Из таблицы будут исключены записи, в которых присутсвует какая-либо подстрока из выбранного файла. К выборке можно последовательно применить несколько разных шаблонов. Обратите внимание, что каждый последующий шаблон применяется к уже отфильтрованной, а не к первоначальной выборке логов по запросу.

  3. Чтобы восстановить первоначальную (т.е. до фильтрации) выборку логов по запросу нажмите F5 или кнопку «!» (выполнить запрос) на панели инструментов.