FreeBSD - logger - общение sh и syslogd
FreeBSD - logger - общение sh и syslogd
При разработке скриптов на разных скриптовых языках, проблем с отправкой записей на syslogd не возникает. Все современные скриптовые языки умеют общаться с syslogd. С помощью утилиты logger можно отправлять для записи в логи сообщения из shell скриптов.
К примеру создадим лог файл, который будет записывать в лог сообщения с тегом test в файл /var/log/test.log
Для этого в /etc/syslog.conf добавим такую конфигурацию:
!test *.* /var/log/test.log
Затем создадим /var/log/test.log:
% :> /var/log/test.log
В большинстве бинарных программ в качестве тега используется имя исполняемого файла. У нас же, в shell скрипте, как такового имени бинаря не будет, и можно будет в качестве тега использовать имя скрипта.
После добавления изменения настроек syslogd, нужно его HUPнуть, что бы он перечитал конфигурацию:
% killall -HUP syslogd
можно конечно и рестартануть syslogd:
% /etc/rc.d/syslogd restart
Но тут нужно быть очень внимательным. Пр рестарте, есть вероятность, что несколько сообщений потеряется.
И теперь непосредственно подходим к отправке сообщения. Отправим сообщение TEST:
% logger -t test "ETO v loge"
и смотрим в /var/log/test.log:
% cat /var/log/test.log Nov 17 15:25:57 gx test: ETO v loge
Ну и еще, если вы хотите фильтровать записи по приоритетам, то приоритеты указываются с помощью флага -p:
% logger -p info -t test "TEST"
Ставить приоритеты удобно, ведь все сообщения с приоритетом err и crit попадают в /var/log/messages и если ваш скрипт будет слать сообщения о своей работе так, что они будут засорять messages, эффективность такого логгирования значительно снизится.