Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Орехов Орех
0 / 0 / 0
Регистрация: 01.05.2014
Сообщений: 68
Записей в блоге: 3
#1

Автоматизация расшифровывания логов - C++

23.05.2014, 09:20. Просмотров 330. Ответов 5
Метки нет (Все метки)

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

Кликните здесь для просмотра всего текста

Читаем файл. Считываем содержимое в память. Потом уже в памяти этим работаем.
Это вроде бы самый простой вариант, но чувствую, что можно сделать лучше.
Тем более что лог-файлы, с которыми я собираюсь работать, очень большого размера : 10-20 мегабайт.


Добавлено через 15 часов 55 минут
вверх
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2014, 09:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Автоматизация расшифровывания логов (C++):

Анализ логов музея. - C++
вот такая задачка!!!! В музее на протяжении дня рееструюеться время прихода и выхода каждого посетителя. таким способом за день...

Запись логов в файл - C++
Добрый день. Есть небольшое клиент-серверное приложение на сокетах, работающее с БД. Вопрос: как лучше написать небольшой логгер,...

Либы для логов и бандерлогов - C++
Начинается глобальное переархитектуривание, рефакторинг и все такое одного проекта. Заодно решил поменять текущую либу логирования (glog...

Класс для вывода логов - C++
Добрый день. Недавно задался вопросом, как выводить логи. При чём в классе происходит вся работа с открытием файлов, выводом времени и...

Консоль для ведения логов - C++
Не уверен, что пишу туда, куда нужно, но есть только один способ узнать. Интересуют существующие решения по сабжу. Требования простые: ...

Автоматизация(перемещение) - C++
Незнаю, но полагаю лучше будет на с++ написать такое...Итак.Предположим на рабочем столе Windows есть Корзина, и она расположена где нибудь...

5
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
23.05.2014, 09:27 #2
Цитата Сообщение от Орехов Орех Посмотреть сообщение
очень большого размера : 10-20 мегабайт
Это очень маленький размер. Если речь идет о настольных ПК и т.п.

Добавлено через 3 минуты
И можно подробнее о
Цитата Сообщение от Орехов Орех Посмотреть сообщение
отсеивает лишние строки-мусор (большая часть текста) и оставляет-выводит в другое место необходимые нужные строки, которые в дальнейшем подлежат анализу.
Какого рода строки нужно отсеивать и что оставлять?
0
Deiron
26 / 26 / 1
Регистрация: 25.05.2009
Сообщений: 98
23.05.2014, 09:48 #3
Ну смотря какие логи. Логи TomCat, даже при обильном кодинге, редко разрастаются больше, чем до 5 МБ.

Тут, на самом деле нетривиальная задача. Потому что сообщение об ошибке может занимать более 1-й строки (например, сообщение об ошибке в Java бывает строчек этак на 20, когда там пишут всю "иерархию ошибки").

И в любом случае, что бы вам помочь нужен образец лога (10 МБ не обязательно. Оставьте из него 1 МБ, не больше) и признак, по которому определяется "полезность сообщения". Или можно даже не сам лог (если там приватные данные) а его структуру. Опять же, не забыв указать строки какого вида вас интересуют.

Или, если могут "сегодня интересовать строки одного вида, завтра - другого" - опять же, примерный лог и ограничения по строкам
0
Орехов Орех
0 / 0 / 0
Регистрация: 01.05.2014
Сообщений: 68
Записей в блоге: 3
24.05.2014, 09:55  [ТС] #4
Спасибо за ответы.
Знаю, что задача не очень трудная. Даже совсем не трудная.,
Просто мне бы хотелось сделать не прилично (не г**внокод).

Теперь немного конкретизирую:
Имеется программа, которая типа "клиент-сервер". (на самом деле не так, но это не принципиально - описание подходит)
С этой программой работают пользователи. Разные постоянно или одни и те же - неважно.
Сам лог содержит различные операции, которые выполняли пользователи в программе.

Когда появляется пользователь и начинает выполнять операции в логах это фиксируется ключевым словом "start"
и заканчивается словом "stop". Это если упростить совсем.
На самом деле логи очень и очень сложные. Самая простая операция занимает примерно строк 50-60.
Но среди них много "мусора" - т.е информации , которая лично мне не нужна.
Сейчас я не смогу полностью расшифровывать логи , потому что не владею всем "словарём" возможных команд\операций из лог-файлов, но я знаю как выглядит мусор , начало и конец операций, а так же некоторые важные команды.
  1. начало операции
  1. мусормусормусормусор важная команда мусор мусор
  1. важная команда мусормусормусормусор
  1. мусормусормусормусор важная команда
  1. конец операции
*примерно так, но мусора и строк намного больше.

Я бы просто хотел упростить чтение логов.
(Знаете, как содержание или закладки в электронной книге - выделяются важные моменты и можно переходить напрямую к ним)
0
0x10
2482 / 1657 / 249
Регистрация: 24.11.2012
Сообщений: 4,125
24.05.2014, 10:09 #5
Сомневаюсь, что без примера формата лога кто-то сможет дать конкретный совет.
Общие слова:
1. Берем запись, разбиваем на поля.
2. По каким-то признакам определяем тип записи.
3. В зависимости от типа записи отфильтровать важные поля.

Цитата Сообщение от Орехов Орех Посмотреть сообщение
На самом деле логи очень и очень сложные.
А логи чьи? Если самописной софтины, то нужно сразу продумывать такой формат, который легко парсить. Если интерпретация неоднозначная - это головняк на ровном месте. Писать эвристики для разбора логов - последнее дело.
0
Орехов Орех
0 / 0 / 0
Регистрация: 01.05.2014
Сообщений: 68
Записей в блоге: 3
24.05.2014, 22:23  [ТС] #6
Логи не от самописной софтины.
На счёт интерпретации: всё не так однозначно. т.е я могу определить по ключевым словам те строки, которые мне нужны, и те которые мне не нужны. Как я уже написал выше - я хотел бы немного упростить себе чтение логов.
И если я избавлюсь от мусора и оставлю "нужные строки", то в принципе я останусь доволен

Добавлено через 3 часа 31 минуту
вверх
0
24.05.2014, 22:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2014, 22:23
Привет! Вот еще темы с ответами:

Автоматизация OpenOffice 3.2 - C++
Доброго времени суток. Необходимо прикрутить OpenOffice 3.2 API к VS 2008 или Qt Creator(вроде как, правда, Оо не дружит особо с MinGW,...

Автоматизация создания указателей - C++
Возможно ли создать цикл для автоматического создания указателей, к примеру мне нужно создать 1000 указателей с именами указатель1,...

Автоматизация ввода с клавиатуры - C++
Возможно существуют готовые решения, буду благодарен за информацию. Необходимо написать приложение которое будет перехватывать нажатие...

Автоматизация научного эксперимента - C++
Здравствуйте. Мне нужно написать программу с графич. интерфейсом , которая взаимодействует с внешними устрйствами (АЦП, ЦАП и т.д.) в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.