Примеры использования#
Примеры использования утилиты Просмотр Лог Файлов.
Выделение части лога#
Частой операцией является выделение части лог файла в которой сохранена информация об ошибке или проблеме в работе ПО для того, чтобы передать этот лог файл разработчику или проанализировать его содержимое на другом компьютере.
Для выполнения этой операции необходимо знать ориентировочное время события, данные которого необходимо выделить из общего объема лог файла.
Если время события неизвестно точно, но известно какое-то сообщение, которое было выведено в момент события или имя переменной связанной с событием, то первоначально необходимо найти место возникновения проблемы.
Как правило, для описания проблемы достаточно интервала в 2 часа, то есть один час ДО времени события и один час ПОСЛЕ.
Первоначально, необходимо вырезать из лог файла интервал длительностью в 2 часа и, после этого, убедиться, что необходимая информация в нем содержится.
Для поиска точного интервала можно воспользоваться описанием в разделе Поиск интервала.
Загрузка необходимого интервала#
Если известно или было определено при анализе лог файла, что необходимое событие произошло в 14:30, то необходимо загрузить данные из лог файла начиная с 13:30 по 15:30, для этого:
Вызываем утилиту Просмотра Логов на нужном лог файле или загружаем лог файл, если утилита уже открыта.
Перед загрузкой данных устанавливаем необходимый интервал в диалоге загрузки.
Параметр Последовательный файл должен быть включен для любого лог файла, который был сгенерирован программами IngortechSCADA без ошибок (то есть данные в нем располагаются последовательно). Эта настройка позволит сэкономить время при загрузке файла так как она прекратит загрузку по достижении конца интервала.
Загружаем данные нажатием на кнопку Данные из интервала.
После загрузки убеждаемся, что данные загрузились верно.
Выбранный лог файл содержит данные за указанный интервал: в заголовке программы и в списке потоков указан правильный интервал.
Выбираем инструмент
и сохраняем вырезанные данные в лог файл с другим именем.
В случае, если лог файл создавался для иллюстрации последовательности событий. Например, для того чтобы продемонстрировать отсутствующее или неправильно пришедшее значение переменной. В этом случае необходимо убедиться, что в выбранном интервале, помимо события с выбранным временем, содержится предыдущее и следующее значение для этой переменной.
Для того чтобы определить наличие нужных данных, необходимо найти в выбранном интервале первое и последнее значения и убедиться что они произошли до и после выбранного события, то есть, в нашем примере, до и после 14:30.
Процесс поиска описан в разделе Поиск интервала.
Информация
В случае, если окажется что значение ДО или ПОСЛЕ не найдены в выбранном диапазоне времени необходимо расширять диапазон с шагом в пол часа и повторять выборку данных из оригинального лог файла.
Поиск информации#
Часто возникает ситуация, когда точное время события, о котором необходимо сообщить, неизвестно.
Например, формулировка проблемы может звучать так: «Новое значение для переменной SP120#2#1 не приходило. Это было приблизительно в 14:00». Или так: «Днем программа самопроизвольно завершилась».
В этом случае, как правило, способ с вырезанием интервала из лог-файла исходя из соображений «час до и час позже» не приносит результата, так как с очень большой вероятностью в выбранных данных проблему выявить не удастся. В этом случае необходимо определить время начала и конца события на основании содержимого сообщений лог файла.
В случае, если необходимо найти интервал для переменной, ключевым параметром является название переменной. Для примера выше - это «SP120#2#1».
В более сложных случаях необходимо иметь представление о сообщениях, сохраняемых программой в тех или иных режимах работы. К примеру, при запуске любая программа сохраняет в лог файл данные о загружаемых библиотеках.
LOAD "C:\RTS_REL_02_09_2022\STD_SP.BPL" 02-09-2022 19:57:34
LOAD "C:\RTS_REL_02_09_2022\WIN_SP.BPL" 31-08-2022 08:12:44
LOAD "C:\RTS_REL_02_09_2022\HCOMPS.BPL" 31-08-2022 05:16:10
LOAD "C:\RTS_REL_02_09_2022\HINTF.BPL" 31-08-2022 08:12:46
LOAD "C:\RTS_REL_02_09_2022\HOPC_CLIENT.BPL" 31-08-2022 08:12:48
LOAD "C:\RTS_REL_02_09_2022\H_REPORT.BPL" 02-09-2022 19:57:46
LOAD "C:\RTS_REL_02_09_2022\HGR32.BPL" 31-08-2022 08:12:50
LOAD "C:\RTS_REL_02_09_2022\RTTRANSP.BPL" 02-09-2022 19:57:56
LOAD "C:\RTS_REL_02_09_2022\RTMONITOR.BPL" 31-08-2022 08:14:08
OLEInit: th=00000914, fl=00000000, pfm=0
OLE inited
CloseMessage: 0000C204
LOAD "C:\RTS_REL_02_09_2022\rtOPCClient.exe" 02-09-2022 19:59:44
Протокол: 14
Получение транспорта...
------------------------------------------
Подобный текст можно использовать для определения момента запуска программы.
Поиска данных о переменной#
Будем искать в лог файле данные о переменной с именем «SP120#2#1».
Загружаем выбранный лог файл.
Выделяем в списке потоков самый первый элемент.
Выбираем инструмент
и в диалоге поиска вводим имя переменной.Запускаем поиск этой строки.
Если утилита не найдет введенный текст во всем содержимом лог файла, то будет выдано сообщение об ошибке:
Это может говорить, к примеру, о том, что неправильно выбран лог файл или информация об имени переменной в сообщении об ошибке ПО указана неправильно.
Предупреждение
В этом случае использовать этот лог файл для поиска причин неисправности будет невозможно и необходимо уточнить сообщение или использовать другой лог файл. Сообщать о проблеме на основании текущего лог файла или передавать его разработчику не имеет смысла.
После того как утилита найдет первое упоминание имени переменной, строка с ним будет выделена в списке сообщений специальным цветом.
В списке потоков будет выделен тот поток, в данных которого есть сообщения об этой переменной.
Устанавливаем и применяем фильтр с названием переменной «SP120#2#1».
В списке сообщений будут отображаться только те строки, которые содержат название переменной.
В результате поиска мы определили, что искомая переменная упоминается множество раз в течении ориентировочно указанного времени 14:00, поэтому для иллюстрации проблемы достаточно вырезать из лог файла интервал за этот час. Этого будет достаточно как для дальнейшего поиска самостоятельно, так и для передачи этой информации разработчику.
Выбираем инструмент
.Вводим диапазон времени который необходимо оставить.
Нажимаем кнопку Данные ВНЕ интервала.
Эта операция удалит все данные ВНЕ указанного интервала, то есть данные внутри этого интервала останутся.
Выбираем инструмент
и сохраняем текущие данные в лог файл с новым именем.
Этот лог файл можно использовать для последующего анализа или отправки разработчику.
Поиск запуска программы#
Иногда возникают ситуации, когда из лог файла необходимо выделить часть лога в связи с преждевременным завершением программы из-за ошибки. Для анализа или передачи лог файла разработчику необходимо локализовать место завершения программы и вырезать из лог файла часть, которая включает в себя период с момента окончания нормальной работы программы до момента ее завершения.
Возможны две ситуации:
Лог файл заканчивается на моменте завершения программы, то есть эту программу, после завершения повторно не запускали.
В этом случае необходимо загрузить лог файл, найти в списке поток, который содержит наибольшее число элементов, перейти на последнее сообщение этого потока и переходя к более старым сообщениям, найти сообщения, сохраненные во время нормальной работы программы. Время таких сообщений будет началом интервала который необходимо вырезать из лог файла.
После определения интервала необходимо удалить ненужные сообщения из начала лог файла.
Для этого необходимо выбрать инструмент
, в котором указать интервал с указанием только конца.Для удаления ненужных сообщений выбрать кнопку Данные ИЗ интервала, таким образом останутся только сообщения от указанного времени до конца файла.
После удаления выбираем инструмент
и сохраняем текущие данные в лог файл с новым именем.После завершения программы ее перезапустили.
В этом случае необходимо найти момент повторного запуска после неожиданного завершения.
Для просмотра количества запусков можно использовать колонку с номером процесса.
В этом примере видно, что в колонке Процесс есть два различных значения. Это говорит о том, что программа была запущена как минимум два раза.
Информация
Количество запусков программы соответствует количеству уникальных значений в колонке Процесс.
Время первого сообщения любого потока в процессе с новым идентификатором будет соответствовать времени запуска программы, то есть это будет конец искомого интервала.
Для определения начала интервала необходимо перейти в поток с наибольшим числом сообщений, перейти на последнее сообщение этого потока и переходя к более старым, найти сообщения, сохраненные во время нормальной работы программы. Время таких сообщений будет началом искомого интервала.
После определения начала и конца интервала, данные которого необходимо сохранить, выбираем инструмент
, в котором указываем данные интервала.Для удаления ненужных сообщений выбрать кнопку Данные ВНЕ интервала, таким образом останутся только сообщения входящие в нужный интервал.
После удаления выбираем инструмент
и сохраняем текущие данные в лог файл с новым именем.
Поиск интервала#
Иногда возникают задачи по выделению части лог файла, которые не привязаны к определенному времени.
Примером такой задачи может служить следующая формулировка проблемы: «Данные для переменной SP120#2#1 рассчитываются неправильно».
В этой задаче нет привязки к определенному времени. Для анализа проблемы или передачи данных разработчику необходимо выделить из лог файла интервал, который включал бы в себя какой-то набор из проблемных значений. Какое именно время выбрать для этого интервала значения не имеет.
Для выполнения этой задачи:
Загружаем данные лог файла, при этом на диалоге выбора интервала нажимаем кнопку Все данные
Если все данные для этого лог файла не могут быть загружены из-за слишком большого их количества будет выведено сообщение с предупреждением:
Это значит, что загрузить все данные лог файла невозможно.
Для работы с таким лог файлом необходимо загружать его данные частями.
После возникновения подобной ошибки необходимо запомнить время, до которого утилита смогла загрузить данные. Это время будет указано в заголовке программы и в диапазоне времени элементов в списке процессов и потоков.
При необходимости работать с остальными данными, необходимо повторно загрузить файл с указанием начального времени, совпадающего с моментом до которого данные были загружены первоначально.
Выбираем инструмент
и в диалоге поиска вводим имя переменной.Запускаем поиск этой строки.
Если утилита не найдет введенный текст во всем содержимом лог файла, то будет выдано сообщение об ошибке:
Это может говорить, к примеру, о том, что неправильно выбран лог файл или информация об имени переменной в сообщении об ошибке ПО указана неправильно.
Предупреждение
В этом случае использовать этот лог файл для поиска причин неисправности будет невозможно и необходимо уточнить сообщение или использовать другой лог файл. Сообщать о проблеме на основании текущего лог файла или передавать его разработчику не имеет смысла.
После того как утилита найдет первое упоминание имени переменной, строка с ним будет выделена в списке сообщений специальным цветом.
В списке потоков будет выделен тот поток, в данных которого есть сообщения об этой переменной.
Устанавливаем и применяем фильтр с названием переменной «SP120#2#1».
В списке сообщений будут отображаться только те строки, которые содержат название переменной.
Среди найденных строк определяем интервал, который будет использован для представления данных о проблеме.
Интервал необходимо выбрать так, чтобы он был минимальный, но при этом содержал 3-5 упоминаний искомой переменной.
Выбираем инструмент
.Вводим диапазон времени который необходимо оставить.
Нажимаем кнопку Данные ВНЕ интервала.
Эта операция удалит все данные ВНЕ указанного интервала, то есть данные внутри этого интервала останутся.
Выбираем инструмент
и сохраняем текущие данные в лог файл с новым именем.
Этот лог файл можно использовать для последующего анализа или отправки разработчику.