Главная > CodeIgniter > Codeigniter логирование ошибок

Codeigniter логирование ошибок

В данной статье описано как в фреймворке CodeIgniter отключить вывод ошибок на экран и настроить запись ошибок в лог-файл. В частности, показано какие изменения необходимо сделать в “движке” CI, чтобы SQL ошибки не отображались, но логировались.

В рабочем коде желательно убирать вывод ошибок пользователю и перенаправлять его в лог-файл.

В CodeIgniter для этого необходимо установить следующие настройки:

1. Файл index.php

2. Файл config.php

3. Файл database.php

Так вот, после всех этих настроек ошибки перестанут отображаться пользователю и будут записываться в лог-файлы. Все, кроме ошибок базы данных! Т.е. настройка $db['default']['db_debug'] = FALSE;
отвечает как за отображение, так и за запись в лог. Если TRUE – ошибка показывается пользователю и записывается в лог. FALSE – ни пользователю, ни в лог.
Или это ошибка, или такая задумка разработчиков CI, но явно неудобный момент.
Его и предлагаю исправить.
Открываем файл /system/database/DB_driver.php и ищем конструкции такого типа:

И исправляем на такую:

Т.е. просто выносим вызов функции log_message из условия if.
Возможно, придется проделать немного больше правок, но суть понятна.
Например, в функции query я выношу из проверочного условия

Значит, нужно вынести и $error_msg = $this->_error_message();, чтобы $error_msg была определена.

Записываемые сообщения об ошибках БД не очень информативны, поэтому удобно добавлять и сам текст sql-запроса, в котором произошла ошибка.



  1. Serge
    09 Сен 2011 из 12:06 | #1

    > Открываем файл /system/database/DB_driver.php и ищем конструкции такого типа:

    Не очень правильно – править ядро движка. К тому же в CI есть средства надстраивания своего кода над ядром без изменений последнего

  1. Трекбеков пока нет.