log de errores

Hola, quería hacer una consulta respecto el manejo de errores

Tengo entendido que en el log de datos que trae el toba_usuario, se ven todas las operaciones que “funcionaron bien” (inserciones, actualizaciones y eliminaciones sobre la base de datos) todas las demás deberían devolver un SQL_STATE

Mi idea es registrar en una tabla de la base de datos los operaciones que no pudieron concretarse osea aquella que ocurrió un error, algo así como el log de errores que trae el toba_editor

try {
$this->dep(‘tabla1’)->sincronizar();

} catch (toba_error_db $e) {

$this->dep(‘tabla_logdeerrores’)-> nueva_fila($e);
$this->dep(‘tabla_logdeerrores’)->sincronizar();
}

Los campos de infomacion relacionados al error de la clase toba_error_db serian los siguientes
void get_codigo_motor()
void get_mensaje_log()
void get_mensaje_motor()
void get_sqlstate()
void get_sql_ejecutado()

La pregunta es por el tema de “cobertura”
¿Capturaría todas las operaciones que no se pudieron concretar? (con el código mencionado… try -catch )

¿Existe otra manera de persistir el log de errores?

Hola Marcos,

hay 2 temas con tu enfoque:

  • Necesitas una conexion extra para guardar el log, debido a que la actual hara rollback y por tanto no se persistira ningun cambio.
    Esa conexion debes crearla manualmente, de lo contrario toba reutilizara la existente (para hacer esto fijate lo que usa el parser de errores).
    Debido a eso, no podes usar los componentes de persistencia, las SQL deberias hacerlas a mano.

  • Para no tener que andar colocando try-catch por todos lados, yo te diria que le hagas una subclase a la fuente de datos, con metodos redefinidos que capturen el error, hagan el log en una conexion aparte y luego vuelvan a lanzar la excepcion hacia afuera.

Saludos