Как регистрировать данные таблицы PostgreSQL в syslog?

У меня есть программа, которая использует эти таблицы, и я хочу добавить некоторые дополнительные функции для ее ведения журнала без изменения программы.

groups ------ id bigint not null name character varying(100) not null users ----- id bigint not null name character varying(100) not null users_groups ------------ group_id bigint not null user_id bigint not null 

Я хочу записать в syslog6 сообщение user123, добавленное в группу456 или сообщение user123 из группы456, каждый раз, когда пользователь добавляется или удаляется из группы.

Моя первая идея заключалась в использовании триггеров PostgreSQL.

 CREATE OR REPLACE FUNCTION process_ext_audit() RETURNS trigger AS $ext_audit$ BEGIN IF (TG_OP = 'DELETE') THEN SELECT name into uname FROM users WHERE id = OLD.user_id; SELECT name into gname FROM groups WHERE id = OLD.group_id; -- write into local6: "uname removed from gname" ELSIF (TG_OP = 'INSERT') THEN SELECT name into uname FROM users WHERE id = NEW.user_id; SELECT name into gname FROM groups WHERE id = NEW.group_id; -- write into local6: "uname added to gname" END IF; RETURN NULL; END; $ext_audit$ LANGUAGE plpgsql; CREATE TRIGGER ext_audit AFTER INSERT OR DELETE ON users_groups FOR EACH ROW EXECUTE PROCEDURE process_ext_audit(); 

Мой подход хорош? Если да, то как я могу записать в syslog из этой функции?

Я использую postgresql 9.2 с CentOS 7, который использует rsyslog.

2 Solutions collect form web for “Как регистрировать данные таблицы PostgreSQL в syslog?”

Насколько мне известно, не существует способа генерировать сообщения syslog из триггеров, но вы можете думать о внешних программах для этой задачи. но см. https://stackoverflow.com/questions/21634848/calling-external-program-from-postgresql-trigger, если вы думаете о внешних программах внутри триггера. Был бы вариант, если вы вставляете сообщения в таблицу аудита внутри своей базы данных и создаете дополнительную задачу (опрос 🙁 для проверки таких событий, как «добавление или удаление пользователя».

Если вы правильно настроили протоколирование (см. 18.8.2. When To Log здесь регистрируетесь), а ваш журнал – это syslog, вы можете использовать RAISE для регистрации. Более подробную информацию можно найти здесь: https://www.postgresql.org/docs/8.3/static/plpgsql-errors-and-messages.html

  • Периодически получать новые строки из файла, возможно, зависания
  • Как настроить файл syslog.conf для записи сообщений iptables в отдельный файл?
  • Использование syslog из модуля ядра
  • Отправка sssd.log в syslog
  • Сообщения из syslogd, что они означают и что мне делать?
  • rsyslog - действие и действие
  • syslog дублирует весь контент
  • Электронная почта dmesg
  • Solaris 11 и syslog над TLS
  • Как настроить демон для мониторинга журнала ошибок и запуска предупреждений об уведомлениях по электронной почте (возможно, syslogd?)
  • Изменение механизма исходящего сообщения syslog с использованием конфигурации rsyslog
  • Interesting Posts

    Проблема с поиском и переменными

    Объединить несколько строк с пробелами в них?

    Пределы дескриптора файла в / etc / system vs /etc/sysctl.conf vs /etc/security/limits.conf в Solaris

    inotify и rsync для большого количества файлов

    пятерка времени задержки с файлом журнала со сценарием оболочки

    Linux Mint Live не сохраняет данные

    скрипт bash заблокирован при выполнении инструкции if при выполнении

    Запуск сценария проекта R с аргументами в AWK в сценарии Bash (Ubuntu Linux)

    Жесткие диски пропадают без перезагрузки – что может быть причиной?

    Кабала, использующая более старую версию, когда установлена ​​более новая версия

    Как я могу убить вредоносное ПО на сервере AWS EC2? (скомпрометированный сервер)

    Какое значение Максимальное разрешение доступа у продукта "Ubuntu 16.04"?

    numlockLed включен, но numpads не работают

    (nologin) root и id X re-spawning

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

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