Мы использовали базу данных журналов на моей последней работе, и это было здорово.
У нас были хранимые процедуры, которые выкладывали бы обзоры общего состояния системы для различных показателей, которые я мог загрузить с веб-страницы. Мы также могли бы быстро выплеснуть трассировку для данного приложения за определенный период, и, если бы я захотел, было легко получить его в виде текстового файла, если вы действительно любите grep-файлы.
Чтобы система ведения журналов сама по себе не стала проблемой, существует, конечно, общая структура кода, которую мы использовали среди различных приложений, которые обрабатывали запись в таблицу журналов. Часть этой инфраструктуры включала также ведение журнала в файл, в случае, если проблема связана с самой базой данных, а часть включает в себя циклическое выполнение журналов. Что касается проблем с пространством, база данных журналов находится в другом расписании резервного копирования, и это действительно не проблема. Пространство (без резервирования) дешево.
Я думаю, что это решает большинство проблем, высказанных в других местах. Это все вопрос реализации. Но если я остановлюсь здесь, это все равно будет «не намного хуже», и это плохая причина, чтобы заняться настройкой ведения журнала БД. Что мне понравилось в этом, так это то, что он позволял нам делать новые вещи , которые было бы намного сложнее делать с плоскими файлами.
Было четыре основных улучшения по сравнению с файлами. Первый - это системные обзоры, которые я уже упоминал. Вторым, и, что самое важное, я считаю, была проверка на предмет отсутствия в сообщениях каких-либо приложений, в которых мы обычно ожидаем их найти. Подобные вещи почти невозможно обнаружить в традиционной регистрации файлов, если вы не проводите много времени каждый день, просматривая ошеломляющие журналы для приложений, которые просто говорят вам, что все хорошо в 99% случаев. Удивительно, как освобождает представление, чтобы показать отсутствующие записи журнала. В большинстве дней нам вообще не нужно было просматривать большинство файлов журнала ... что-то, что было бы опасно и безответственно без базы данных.
Это поднимает третье улучшение. Мы генерировали одно ежедневное электронное сообщение о статусе, и это была только вещь, которую нам нужно было просматривать в дни, когда все работало нормально. В электронном письме были указаны ошибки и предупреждения. Отсутствующие журналы были повторно зарегистрированы как предупреждение той же самой работой базы данных, которая отправляет электронную почту, и пропуск электронной почты был большой проблемой. Мы могли бы переслать конкретное сообщение журнала на наш баг-трекер одним щелчком мыши прямо из ежедневного электронного письма (оно было отформатировано в формате html, извлекало данные из веб-приложения).
Последнее улучшение состояло в том, что если мы хотим более внимательно следить за конкретным приложением, скажем, после внесения изменений, мы можем подписаться на RSS-канал для этого конкретного приложения, пока не будем удовлетворены. Это сложнее сделать из текстового файла.
Там, где я сейчас нахожусь, мы гораздо больше полагаемся на сторонние инструменты и их возможности ведения журналов, а это означает, что мы вернемся к гораздо большему количеству ручного просмотра. Я действительно скучаю по БД, и я обдумываю написание инструмента для чтения этих журналов и повторного входа в БД, чтобы вернуть эти способности.
Опять же, мы сделали это с помощью текстовых файлов как запасной вариант, и именно новые возможности действительно делают базу данных стоящей. Если все, что вам нужно сделать, это записать в БД и попытаться использовать ее так же, как вы делали старые текстовые файлы, это добавляет ненужную сложность, и вы также можете просто использовать старые текстовые файлы. Способность создавать систему для новых функций делает ее полезной.