Добавить детали к журналам Codeigniter

Все ошибки, которые меня интересуют в отладке в лог-файлах Codeigniter, сообщают, что они произошли /system/core/Loader.php когда они этого не делают. Например, вот строка:

ERROR | 2014-09-22 22:35:43 | "Severity: Notice  --> Undefined variable: my_variable \/system\/core\/Loader.php(829) : eval()'d code 84"

Я знаю, из какого файла это исходит, и это представление. Я в курсе debug_backtrace и я думаю о том, чтобы сделать из него цепочку и соединить ее в конце $msg переменная в переопределенной Log.php, но я сначала хотел проверить две вещи со всеми вашими друзьями:

  1. Является debug_backtrace лучший способ сделать это? Возвращает огромное количество данных.
  2. Кто-нибудь знает кого-то, кто уже сделал это? Кажется очевидной необходимостью для любого, кто использует Codeigniter (… по-прежнему;)

0

Решение

Вот код, который вы может адаптироваться к вашим потребностям (я рекомендую создать My_Log и не редактировать системный файл на тот случай, если CI когда-либо получит обновление). Причина, по которой я это сделал, сложна и бесполезна, но может дать вам начало:

protected function log_query ($query, $type)
{
$backtrace = debug_backtrace ();
$backtrace = array_slice ( $backtrace, 2, -2 ); // first and last two elements are things that never change

$traced    = array ();

foreach ( $backtrace as $bt )
{

$func   = isset ( $bt['function'] ) ? $bt['function'].'()' : '';
$line   = isset ( $bt['line'] )     ? $bt['line']          : '';
$file   = isset ( $bt['file'] )     ? str_replace ( APP, '', $bt['file'] ) : '';
$object = isset ( $bt['object'] )   ? get_class ( $bt['object'] ) : '';
$args   = array (); build_args ( $bt['args'], $args );
$args   = implode ( '; ', $args );

if ( $object )
{
$obj_func = $object . '->' . $func;
} else {
$obj_func = $func;
}

$traced[] = "$file $obj_func $line $args";
unset($args);
}

$traced = implode ( "\n\t", $traced );

$date = MYSQL_DATE_TIME;
$uri  = isset ( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : '' ;
$query= preg_replace ( "/[\n\t]/", ' ', $query );

log_message ('error', "{$query}\n\n\t{$date} ({$type})\n\t{$uri}\n\t{$traced}\n--------------------------\n");
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]