Почему там столько файлов журнала в типичной системе Linux? То, почему они не используют тот, консолидировало дб/файл журналов и API?

Один метод, который Вы могли использовать, должен использовать псевдоним вместо символьной ссылки для взятия Вас к ~/a/really/long/path. Это - метод, который я использую, с тех пор я могу просто ввести простой 1/2/et cetera команда буквы вместо символьной ссылки CD

8
08.10.2010, 18:04
5 ответов

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

В поиске с помощью Google я нашел эту хорошую рецензию о простом тексте с комментариями о философии Unix.

16
27.01.2020, 20:08

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

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

В системе Unix у Вас уже есть некоторый "системный журнал API". Это называют системным журналом. Системным журналом не является действительно API, но это - стандарт для входа сообщений. Имя обозначает сетевой протокол и библиотеку и демона позади нее.

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

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

Вам решать.

15
27.01.2020, 20:08

Я просто задаюсь вопросом, почему там столько файлов журнала в типичной системе Linux?

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

Не был бы это быть лучшей идеей иметь одну системную функцию API для входа

Этот - хорошая идея. Давайте назовем это системным журналом. Его задание состоит в том, чтобы отправить записи в журнале демону системного журнала.

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

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

  • Что Вы делаете, если база данных не работает? (Файловая система является фундаментальным компонентом (и я упомянул, что это намного более просто, чем реляционная база данных?); демон системного журнала является простым компонентом, который делает одно задание (типичная функция в дизайне Unix) и так, как ожидают, сделает это хорошо и надежно.)
  • Как Вы регистрируете операции базы данных? (Хорошо, через саму базу данных — после того, как все журналы содержат записи от ядра и от демона системного журнала — но снова намного более сложная база данных делает это более трудным и менее надежным).
  • Как Вы получаете доступ к записям в журнале? Сравните простоту cat, grep, less против SQL-запросов. И полномочия файла против, ну, в общем, я не знаю, как Вы обработали бы это в типичной реляционной базе данных.
  • Установки мультисервера не хранят свои журналы локально, они используют удаленную функцию журнала, это было встроено в демона системного журнала с тех пор в значительной степени рассвет Unix. Это легко реализовать с архитектурой входа Unix; Вы не можете выполнить дублируемую базу данных по тому бюджету сложности.
10
27.01.2020, 20:08

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

4
27.01.2020, 20:08

Это сделало бы вещи как 'хвост-f /var/log/apache/access.log' невозможный.

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

1
27.01.2020, 20:08
  • 1
    grep '\[apache\]' | tail -f /dev/stdin - но имея сервер входа в систему в расчете на пользователя (когда пользователь не имеют никакого доступа к журналу другого пользователя). –  Maciej Piechotka 08.10.2010, 17:21
  • 2
    , "Почему Вы думаете, что было бы лучше поместить все в один файл?" - поскольку я люблю SQL ;-) И потому что мне не нравится (и едва может) иметь в виду много вещей. –  Ivan 08.10.2010, 17:30
  • 3
    , Когда все, что Вы знаете, является SQL, все похоже на проблему реляционной базы данных. –  David Mackintosh 08.10.2010, 19:28

Теги

Похожие вопросы