Запись сообщений в syslog из shell скрипта
Логи в скриптах можно вести несколькими способами, один из самых простых – записывать новые сообщения в какой-то файл. Но мне такой подход кажется неправильным. В системе уже есть специальный инструмент для ведения логов syslog. Вот его и стоит использовать!
Для добавления сообщений в syslog есть утилита logger. В принципе может писать сообщения и в отдельный файл. Напишу небольшую функцию, которую можно будет добавлять в любой скрипт для ведения логов.
add_log_message ()
{
local logger='/usr/bin/logger'
local tag='My Script'
local port=514
local host=localhost
local facility='user'
local level='notice'
local message=$1
if [ -z $message ]; then
return 1
else
$logger -t "$tag" -p ${facility}.${level} -P $port -h $host "$message"
if [ "x$?" != "x0" ]; then
return 2
fi
fi
}
add_log_message 'Hello world'
Опция -t задает TAG, фактически TAG можно использовать для идентификации источника сообщения. Так же logger умеет отправлять сообщения syslog-у на другом сервер, т.е. легко можно организовать сбор всех типов логов на один сервер.
logger -P 514 -h logger.domain.ru 'Hello World'
По умолчанию logger пишет все сообщения в facility user с приоритетом notice, но это можно поменять используя ключ -p:
logger -p cron.warning 'Hello world'
|
|