Home > log_analysis

log_analysis

Log_analysis is a project mainly written in Ruby, it's free.

Analysis of compilation log

h2. Введение

В статье описан метод работы со скриптом, сравнивающим 2 файла лога компиляции (старый и новый).

h2. Возможности скрипта

Предположим, что у вас есть старый файл лога компиляции (log1.txt) и файл лога, который вы сами только что сохранили (log2.txt). Требуется сравнить эти два файла, чтобы определить, не добавилось ли новых ошибок в новой версии или патче.

Сделать это можно руками или с помощью небольшого скрипта log_analysis.rb.

Этот скрипт сравнит 2 файла и покажет:

  • Сколько ошибок было в старом логе
  • Сколько ошибок стало в новом логе
  • Насколько уменьшилось/увеличилось общее кол-во ошибок
  • Сколько новых ошибок появилось
  • А также отобразит контекст появившихся ошибок

| Примечание: \ Следует сказать, что некоторые логи могут содержать больше чем один блок итогов компиляции. В таком случае, сравниваться будут только последние блоки. |

h1. Установка

Скрипт написан на языке Ruby, поэтому для запуска скрипта надо сначала установить среду Ruby. Делается это просто, с помощью обычного установщика. Установщик не требует прав администратора.

| Примечание: \ Файлы установщика и самого скрипта прикреплены к данной странице.| Во время установки укажите папку для установки, на запись в которую у вас есть доступ, например D:\Ruby192. Также во время установки разрешите установщику добавить путь до экзешника руби в PATH.

Теперь скачайте сам скрипт и запустите его таким образом:

{code} ruby <путь до скрипта> <путь до старого лога> <путь до нового лога> {code}

Например: {code} D:\projects\log_analysis> ruby log_analysis.rb D:\COMP@CNN_TEST_230611_112656.log D:\COMP@CNN_TEST_230611_123519.log {code}

h1. Использование

Чтобы сравнить два файла лога, нужно запустить скрипт через командную строку, передав в качестве параметров сначала путь до старого лога, а затем путь до нового:

{code} ruby log_analysis.rb log1.txt log2.txt {code}

Скрипт запуститься и выведет информацию схожую со следующей:

{code} D:\projects\log_analysis>ruby log_analysis.rb D:\COMP@CNN_TEST_230611_112656.log D:\COMP@CNN_TEST_230611_123519.log

Сравниваю файлы...

Старый лог: D:\COMP@CNN_TEST_230611_112656.log Новый лог : D:\COMP@CNN_TEST_230611_123519.log

Количество блоков компиляции: В старом логе: 1 В новом логе : 1 Далее будут учитываться только последние блоки компиляции

Ошибок в старом файле : 433 Ошибок в новом файле : 260 Всего устранено ошибок: 173

Появилось новых ошибок: 5

Новые ошибки: 1: Операция SYSTEM.CLOSE_106 2: Операция SYSTEM.CLOSE_LDZ 3: Операция SYSTEM.CLOSE_SOVET 4: Операция SYSTEM.CLOSE_UVKX 5: Операция SYSTEM.CLOSE_UZD

Контекст ошибок:

======== Контекст ошибки #1 (строка 831) ======== 185: Операция SYSTEM.CLOSE_106 Имеет ошибки

======== Контекст ошибки #2 (строка 833) ======== 186: Операция SYSTEM.CLOSE_LDZ Имеет ошибки

======== Контекст ошибки #3 (строка 837) ======== 188: Операция SYSTEM.CLOSE_SOVET Имеет ошибки

======== Контекст ошибки #4 (строка 839) ======== 189: Операция SYSTEM.CLOSE_UVKX Имеет ошибки

======== Контекст ошибки #5 (строка 841) ======== 190: Операция SYSTEM.CLOSE_UZD Имеет ошибки {code}

Как видно из приведенного выше ответа скрипта, в новом логе присутствует 5 ранее отсутствовавших ошибок. Однако общее количество ошибок уменьшилось на 173.

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

h1. Известные проблемы

Существует несколько известных проблем:

Путь до файлов лога не должен включать кириллические символы

Из-за отсутствия поддержки командной строкой кодировки utf-8, все выводимые данные кодируются в кодировке cp866 (IBM866), т.ч. при перенаправлении вывода в файл (> log.rb log1.txt log2.txt > output.txt) его кодировка будет cp866.

h2. Обратная связь

Обо всех найденных ошибках и т.д. сообщайте на адрес mailto:[email protected]. Также о багах можно отписать на [github|https://github.com/BlackFoks/log_analysis].