Ноя 06 2009

logger. Общаемся с syslog из shell скриптов.

При разработке скриптов на разных скриптовых языках, проблем с отправкой записей на syslogd не возникает. Все современные скриптовые языки умеют общаться с syslogd. С помощью утилиты logger можно отправлять для записи в логи сообщения из shell скриптов.
К примеру создадим лог файл, который будет записывать в лог сообщения с тегом test в файл /var/log/test.log
Для этого в /etc/syslog.conf добавим такую конфигурацию:

!test
*.*                                             /var/log/test.log


Затем создадим /var/log/test.log:

touch /var/log/test.log

В большинстве бинарных программ в качестве тега используется имя исполняемого файла. У нас же, в shell скрипте, как такового имени бинаря не будет, и можно будет в качестве тега использовать имя скрипта.
После добавления изменения настроек syslogd, нужно его HUPнуть, что бы он перечитал конфигурацию:

killall -HUP syslogd

можно конечно и рестартануть syslogd:

/etc/rc.d/syslogd restart

Но тут нужно быть очень внимательным. Пр рестарте, есть вероятность, что несколько сообщений потеряется.

И теперь непосредственно подходим к отправке сообщения. Отправим сообщение TEST:

logger -t test "TEST"

и смотрим в /var/log/test.log:

less /var/log/test.log

Я увидел такое:

Oct 24 23:54:37 sh test: TEST

Ну и еще, если вы хотите фильтровать записи по приоритетам, то приоритеты указываются с помощью флага -p:

logger -p info -t test "TEST"

Ставить приоритеты удобно, ведь все сообщения с приоритетом err и crit попадают в /var/log/messages и если ваш скрипт будет слать сообщения о своей работе так, что они будут засорять messages, эффективность такого логгирования значительно снизится.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть