syslog

С помощью syslog удобно отслеживать работу системы.

syslog.php
openlog("My script", LOG_PID | LOG_ODELAY | LOG_PERROR, LOG_LOCAL0); // не обязательно
 
// LOG_PID - писать PID
// LOG_ODELAY - отложить открытие syslog до первого сообщения об ошибке
// LOG_PERROR - также выводить в STD_ERR
// LOG_LOCAL0 - "тип". @see http://php.net/manual/ru/function.openlog.php
 
syslog(LOG_EMERG,   'система непригодна'); // также выводится во все терминалы
syslog(LOG_ALERT,   'необходимы незамедлительные меры');
syslog(LOG_CRIT,    'критические условия');
syslog(LOG_ERR,     'условия ошибки');
syslog(LOG_WARNING, 'условия предупреждения');
syslog(LOG_NOTICE,  'нормальные, но значительные условия');
syslog(LOG_INFO,    'информационное сообщение');
syslog(LOG_DEBUG,   'сообщение отладки'); // обычно не попадает в журнал syslog

Философия использования

Предварительно необходимо настроить syslog, чтобы в него попадали сообщения (на убунте было выключено, и *.warning никуда не писался).

Какой уровень выставить? Информация для размышления:

  • Уровней ошибок 6 + 1 (отладка)
  • Уровень ошибки в лог не пишется (но можно по этому признаку писать в разные файлы)
  • LOG_EMERG - забьется linux-консоль, если сообщений будет много (например, при каждом открытии страницы будет ошибка соединения с БД)
  • openlog и closelog хорошо, но долго возиться, и их ценность не высокая

Я определил 4 уровня, которые передаются также в тексте сообщения:

syslog.php
// Необходимо срочно починить, перестал работать Sphinx
syslog(LOG_ALERT, '[Sign][docs.list][alert]Sphinx is gone away');
 
// Ошибка, веб-сервис не ответил
syslog(LOG_ERR, '[1C exchange][ws.debt][error]Empty response from web service');
 
// У пользователи произошел сбой, но это скорее его вина
syslog(LOG_WARNING, '[Sign][user.sign][warning]User has wrong sign');
 
// Информационное сообщение (для статистики)
syslog(LOG_INFO, '[Sign][doc.sign][info][1100]Document was signed');

Формат сообщения такой:

[система][подсистема/операция][тип сообщения][ID/GUID, если есть] Текст сообщения

Мониторинг

Ссылки