Почему в типичной Linux-системе так много файлов журналов? Почему они не используют один консолидированный журнал db / file и api?

Мне просто интересно, почему в типичной системе Linux так много файлов журналов? Разве не лучше было бы иметь одну системную функцию api для ведения журнала и одну консолидированную таблицу для сохранения всех записей журнала из всех приложений?

5 Solutions collect form web for “Почему в типичной Linux-системе так много файлов журналов? Почему они не используют один консолидированный журнал db / file и api?”

Это часть философии Unix . Идея состоит в том, что текстовые файлы свободны от программной блокировки, и каждый может использовать любую технику, которую они предпочитают. Для этого часто используются плоские файлы, в отличие от языков разметки, таких как XML (хотя я также видел программы, хранящие вещи в формате XML).

В googling я нашел эту приятную запись об открытом тексте с комментариями о философии Unix.

Использование простых текстовых файлов имеет то преимущество, что вам не нужны какие-либо инструменты, специфичные для базы данных, для получения записей в журнале.

Вы можете проанализировать их с помощью grep, если хотите, вы можете открыть их с помощью своего любимого пейджера, и вы можете обрабатывать их на вашем любимом языке сценариев, например, в Perl, Python и т. Д. Без каких-либо дополнительных библиотек.

В системе Unix у вас уже есть какой-то «системный журнал API». Он называется syslog. Syslog – это не API, а стандарт для регистрации сообщений. Имя обозначает сетевой протокол, а также библиотеку и демон за ней.

Конфигурация по умолчанию для большинства систем – это демон syslog, который прослушивает локальные сообщения.

Демон принимает сообщения и ведет журнал. Существует несколько различных реализаций демона syslog для всех типов платформ, а также возможность регистрации ваших сообщений в базе данных.

Это тебе решать.

Мне просто интересно, почему в типичной системе Linux так много файлов журналов?

Различные файлы журналов содержат различную информацию (хотя, как правило, существует некоторое дублирование). Они часто имеют разные характеристики: разные политики ротации и хранения, разные разрешения и т. Д. Демон syslog заботится о их написании; вы можете увидеть его настройки в файле /etc/syslog.conf или /etc/syslog-ng.conf .

Разве не лучше было бы иметь одну системную функцию api для регистрации

Это хорошая идея. Назовем это syslog . Его задача – отправить записи журнала на демон syslog.

и одну консолидированную таблицу для сохранения всех записей журнала из всех приложений?

Теперь это целая банка червей. Кажется, вы предполагаете наличие механизма базы данных, возможно, реляционной базы данных, возможно, той, которую вы можете запросить в SQL. Но Unix старше SQL, и есть очень веские причины, по которым он не принял SQL в качестве стандартного компонента. В Unix база данных – это файловая система. Это не реляционная база данных, она простая . Его записи – это не строки, а простые файлы, предпочтительно текст, желательно с простым форматом. Например, файлы журналов представляют собой текстовые файлы с одной записью в строке, содержащей дату, имя машины, исходную программу и текст ввода. Использование реляционной базы данных будет иметь ряд недостатков:

  • Что вы будете делать, если база данных не работает? (Файловая система является фундаментальным компонентом (и я упомянул, что это намного проще, чем реляционная база данных?), Демон syslog – это простой компонент, который выполняет одно задание (общая функция в дизайне Unix), и поэтому ожидается, что это будет хорошо и надежно.)
  • Как вы регистрируете операции с базами данных? (Хорошо, через саму базу – после того, как все журналы содержат записи из ядра и из демона syslog, – но опять же более сложная база данных делает это более трудным и менее надежным).
  • Как вы получаете доступ к записям журнала? Сравните простоту cat , grep , less от SQL-запросов. И разрешения файлов против, ну, я не знаю, как вы справитесь с этим в типичной реляционной базе данных.
  • Многосерверные установки не хранят свои журналы локально, они используют функцию удаленного журнала, которая была встроена в демона syslog, так как в значительной степени на рассвете Unix. Это легко реализовать с помощью архитектуры регистрации unix; вы не можете запустить реплицированную базу данных в этом бюджете сложности.

Если вы действительно хотите хранить свои системные журналы в реляционной базе данных (что может иметь много преимуществ), проверьте rsyslog ( « Новая и предыдущая замена для syslog» ), которая может записывать системные журналы в базу данных MySQL , Postgres или Oracle .

Это сделало бы такие вещи, как «tail -f /var/log/apache/access.log».

Почему вы думаете, что было бы лучше положить все в один файл?

  • Debian - auth.log отсутствует в / var / log
  • Keepalived - возможно ли изменить каталог файла журнала?
  • Форматировать журналы, чтобы добавить некоторые строки, только если есть ошибка
  • почему utmp, wtmp и btmp называются такими, какие они есть?
  • Процесс смешивания труб / бревен
  • Система WHEN снизилась (выключение питания)
  • Сохранять и очищать журналы событий и безопасности
  • почему файлы второго лога на / var / log не сжаты
  • Регистрация полных путей к печатным файлам в CUPS
  • 1 (su, sudo), он наводняет записи в / var / log / messages
  • Как я могу регистрировать всю активность в окне терминала?
  • Interesting Posts

    путают скорость записи dd и кеш страниц VFS

    Могу ли я переназначить SHIFT + CAPS LOCK в консоли Linux?

    Grep и подсчет совпадающих строк

    Почему баобаб оценивает мое использование менее чем наполовину по сравнению с du или pan_quota?

    Почему «du -b» показывает другой размер, чем «правый щелчок» ⇨ «свойства» внутри файловых браузеров?

    Разбор числа из URL в bash и подача в другую функцию bash?

    Вызов команды из скрипта не ожидает завершения предыдущей команды

    Несколько строк настройки окружения переменной окружения с помощью bash

    Bash: завершение табуляции с помощью cdable_vars

    Как получить «текущий глобус» в zsh

    Как узнать, перенаправляется ли выход в файл?

    Попытка подключиться через cl

    Перемещение файлов из папки в папку на удаленном сервере с использованием SSH без загрузки на локальный компьютер

    Какой Grub использовать для пользовательского портативного образа загрузки?

    Невозможно использовать максимальное разрешение, режим xrandr не отображается (адаптер Intel GPU, от DP до DVI)

    Linux и Unix - лучшая ОС в мире.