Отправка логов php на почту.

При отладке какого-либо скрипта часто возникает необходимость прослеживать по логам состояние/значение переменных, вхождение в блоки условий и т.д. Есть множество различных способов ведения логов и их дальнейшего разбора. Я бы хотел рассмотреть в этом посте логирование с отправкой информации на почтовый ящик. Это удобно для дебага, когда применить нормальные средства отладки не удается. Итак что нам нужно:

1) Работающая функция mail на стороне сервера.

Если не работает – идем сюда /etc/php5/apache2/php.ini и ищем параметр sendmail_path прописываем в него следующее:

sendmail_path = "/usr/sbin/sendmail -t -i"

Да, можно настроить и свой крутой почтовый сервер, но нам пока этого не нужно.

проверим:

<?php mail('somewhere@somemail.com', 'hi', 'your mail works');

Дальше можно накидать свою функцию, которая будет логировать все что мы ее подадим в качестве параметра, что типа:

function mylog( $data )
{
    $dumpData = "\n";
    $dumpData .=  "<pre>";
    $dumpData .= print_r($data, 1);
    $dumpData .=  "</pre>";
    $dumpData .= "<br/><br/><br/>\n\n\n";
    $dumpData .= print_r(debug_backtrace(), 1);
    mail( MAIL_TO, DEBUG, $dumpData );
}

2) Удобный почтовый клиент, который позволит фильтровать полученные логи.

Мне лично для этих целей очень нравится thunderbird, в котором можно удобно настроить автоматические фильтры и повесить на них различные события.

Еще раз повторюсь я за отладку с использованием спец программ для отладки, но порой бывает приходится прибегать и к таким методам.