Foros del Web » Programando para Internet » PHP » CodeIgniter »

Extender clase Log

Estas en el tema de Extender clase Log en el foro de CodeIgniter en Foros del Web. hola, estoy intentando extender la clase log de CI para poder guardar los mensajes en la base de datos. Estoy intentando esto: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 14/12/2013, 15:23
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 20 años
Puntos: 43
Extender clase Log

hola,
estoy intentando extender la clase log de CI para poder guardar los mensajes en la base de datos. Estoy intentando esto:

Código PHP:
Ver original
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. require_once(SYSDIR.'/core/Controller.php');
  3. class MY_Log extends CI_Log {
  4.  
  5.     public function __construct()
  6.     {
  7.         $this->ci = & get_instance();
  8.         parent::__construct();
  9.     }
  10.     public function write_log($level='error', $msg, $php_error = FALSE){
  11.        
  12.         $result = parent::write_log($level, $msg, $php_error);
  13.        
  14.         $this->ci->load->library('user_agent');
  15.         if ($result == TRUE && strtoupper($level) == 'ERROR') {
  16.              die("si no funciono");
  17.             $user_id = $this->ci->session->userdata('user_id') ? $this->ci->session->userdata('user_id') : '0000';
  18.             $gmtoffset = 60*60*5;
  19.             $post = array(
  20.                 'log_type' => $level,
  21.                 'log_message' => $msg,
  22.                 'log_php_message' => $php_error,
  23.                 'log_ip_origin' => $this->ci->input->ip_address(),
  24.                 'log_user_agent' => $this->ci->agent->agent_string(),
  25.                 'log_date' => date("Y-m-d H:i:s",time() + $gmtoffset),
  26.                 'user_id' => $user_id,
  27.                 'uri_string' => $this->ci->uri->uri_string(),
  28.             );
  29.  
  30.             $this->ci->db->insert('log_erros_system', $post);
  31.         }
  32.        
  33.         return $result;
  34.     }
  35. }

pero me tira este error y no logro evitarlo:
Fatal error: Class 'CI_Controller' not found in C:\xampp\htdocs\poker\system\core\CodeIgniter.php on line 231

alguien le paso lo mismo.
Desde ya muchas gracias
  #2 (permalink)  
Antiguo 23/12/2013, 14:11
 
Fecha de Ingreso: enero-2013
Mensajes: 14
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Extender clase Log

Hola, yo también estoy aprendiendo CI, pero ví la clase y línea de tu error, es la función &get_instance() he visto que en la linea 7 del código que subes dice "& get_instance()" tal vez ese espacio tenga algo que ver, es la misma función, no sé es solo una idea, ojalá ayude en algo.

Saludos.
  #3 (permalink)  
Antiguo 30/12/2013, 17:46
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 6 meses
Puntos: 34
Respuesta: Extender clase Log

Puedo ayudar en algunas cosas:

1 el require no hace falta. (Si pones cualquier clase en aplication libraries con el prefijo MY_ codeigniter se fija automaticamente si existe una library del framework con ese nombre y la incluye)

2 En el constructor SIEMPRE la primer linea debe llamar al constructor del padre.

3 Puede que haya un error antes que se instancie el framework, por lo tanto CI no existirìa y no te va a dejar loguear.

No entiendo que tienen de malo los archivos log que genera el framework? por que complicarse?

Etiquetas: clase, extender, frameworks-y-php-orientado-a-objetos, log, php, post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:30.