Время для прочтения: 1 мин. 12 сек.

Пишем сообщения в системный журнал при помощи syslog()

Средство syslog - очень мощный инструмент для отладки ваших web-приложений. С помощью него вы можете наблюдать, какие модули и SQL-запросы выполняются, а также значения каких переменных изменяются, когда вы ходите по Web-сайту. Это помогает точно определять модули, в которых, вероятно, имеются проблемы или критические ошибки.

Функция syslog()


<?php
// функция пишет сообщение в системный журнал,
// возвращая true в случае успеха, false - в случае ошибки.
bool syslog (int Приоритет, string Сообщение);
?>

Возможные значения приоритетов

Константа Описание
LOG_EMERG дальнейшее использование системы невозможно
LOG_ALERT необходимо немедленно принять меры
LOG_CRIT критическое состояние
LOG_ERR состояние ошибки
LOG_WARNING предупреждение
LOG_NOTICE уведомление
LOG_INFO информационное сообщение
LOG_DEBUG отладочное сообщение

Что писать в журнал

Что и куда писать, решать вам. Лично я в своих проектах использую syslog для записи сообщений об ошибках (недоступна база данных, файл не существует, пользователь не авторизован), отладочной информации (модуль запущен, сделан такой-то запрос к базе данных, модуль остановлен) и тд.

Пример


<?php
if (authorized_client()) {
    // Если пользователь авторизован
    // делаем что-нибудь
} else {
    // Если не авторизован
    // пишем сообщение в лог
    $date = date("Y/m/d H:i:s");
    syslog(LOG_WARNING, "Не авторизованный клиент: {$date} {$_SERVER['REMOTE_ADDR']} ({$_SERVER['HTTP_USER_AGENT']})");
}
?>

Теперь откройте окно X-терминала и введите следующую команду, чтобы увидеть, что было записано в файл /var/log/messages:


tail /var/log/messages

Вы должны увидеть примерно следующий текст


Feb 09 14:43:42 localhost apache2: 127.0.0.1: test.php - Не авторизованный клиент: 2011/02/09 14:43:44 127.0.0.1 Mozilla...

Для просмотра живого лога используйте параметр -f


tail -f /var/log/messages

Ссылки

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>