Я работаю в системе анализа журналов, которая читает журнал tomcat и отображает его в виде диаграммы / таблицы на веб-странице.
(Я знаю, что существует какая-то система анализа журналов, я воссоздаю колесо. Но это моя работа, мой босс хочет этого.)
Наш лог tomcat сохраняется по дням. Например:
2011-01-01.txt
2011-01-02.txt
......
Вот мой способ экспортировать журналы в БД и читать их:
1 Структура БД
У меня есть три таблицы:
1) log_current: сохранить сгенерированные сегодня журналы.
2) log_past: сохранить журналы, созданные до сегодняшнего дня.
Приведенные выше две таблицы принадлежат ОДНОЙ ЖЕ схеме.
+-------+-----------+----------+----------+--------+-----+----------+----------+--------+---------------------+---------+----------+-------+
| Id | hostip | username | datasend | method | uri | queryStr | protocol | status | time | browser | platform | refer |
+-------+-----------+----------+----------+--------+-----+----------+----------+--------+---------------------+---------+----------+-------+
| 44359 | 127.0.0.1 | - | 0 | GET | / | | HTTP/1.1 | 404 | 2011-02-17 08:08:25 | Unknown | Unknown | - |
+-------+-----------+----------+----------+--------+-----+----------+----------+--------+---------------------+---------+----------+-------+
3) log_record: сохранить информацию log_past, она записывает дни, журналы которых были экспортированы в таблицу log_past.
+-----+------------+
| Id | savedDate |
+-----+------------+
| 127 | 2011-02-15 |
| 128 | 2011-02-14 |
..................
+-----+------------+
Таблица показывает, что журнал за 2011-02-15 был экспортирован.
2 Экспорт (в дБ)
У меня два графика работы.
1) день работы.
в 00: 05: 00, проверьте каталог журналов tomcat (/ tomcat / logs), чтобы найти все последние 30-дневные файлы журналов (конечно, он включает журналы вчерашнего дня.
проверьте таблицу log_record, чтобы увидеть, экспортируются ли журналы за один день, например, 2011-02-16 не найден в log_record , поэтому я прочитаю 2011 -02-16.txt и экспортируйте их в log_past.
После экспорта вчерашнего журнала я запускаю файловый монитор для сегодняшнего журнала (2011-02-17.txt), независимо от того, существует он или нет.
2) файловый монитор
Как только монитор запустится, он будет читать файл час за часом. Каждый прочитанный журнал будет сохранен в таблице log_current.
3 перезапуск сервера tomcat.
Иногда нам нужно перезапустить tomcat, поэтому после запуска tomcat я удаляю все журналы log_current, а затем выполняю дневную работу .
4 Моя проблема
1) две таблицы (log_current и log_past).
Потому что, если я сохраню сегодняшний журнал в log_past, я не смогу убедиться, что все файлы журнала (xxxx-xx-xx.txt) экспортированы в дБ. Так как я буду делать проверку в 00:05:00 каждый день, чтобы убедиться, что журналы до сегодняшнего дня должны быть экспортированы.
Но это затрудняет запрос журналов по вчерашнему и сегодняшнему дню.
Например, запрос с 2011-02-14 00:00:00 до 2011-02-15 00: 00: 00 , эти журналы должны быть в log_past.
Но как насчет с 2011-02-14 00:00:00 до 2011-02-17 08: 00: 00 ? (Предположим, это 2011-02-17 09:00:00 сейчас ).
Сложно делать запросы по таблицам.
Кроме того, я всегда думаю, что мой дизайн таблицы и способа работы (график работы экспорта / чтения) не идеален, поэтому кто-нибудь может дать хорошее предложение?
Мне просто нужно экспортировать и прочитать журнал, и я могу проводить анализ почти в реальном времени, где в режиме реального времени мне нужно сделать журналы текущего дня видимыми по графику / таблице и т. Д.