Bienvenidos sean a este post, hoy hablaremos sobre este plugin o complemento muy particular.
Hasta ahora vimos como trabajar con logs pero cuando lo hacemos con el log de errores puede surgir la necesidad de tener a estos errores en un log separado para ser utilizados en la depuracion de nuestras aplicaciones, aqui entra en accion este plugin que fue incorporado en la version 5.5 de mariadb, no esta instalado de manera predeterminada pero se puede hacer con el siguiente comando:
MariaDB [(none)]> install soname 'sql_errlog';
Este comando nos permite instalar nuevos complementos, esto gracias a la extension soname y seguido de la libreria que deseamos instalar, como en este caso posee un solo complemento instalara solamente a este pero en caso de haber mas tambien se instalaran.
Aunque puede instalar elementos innecesarios para esta ocasion nos es mas util porque es mas corto y directo, por otro lado no necesitamos incluir la extension .so o .dll porque en mariadb es opcional lo cual hace que sea independiente del sistema, una vez instalados podremos tener acceso a algunas variables del sistema, se las usa para controlar la conducta del log, veamos cuales son:
- sql_error_log_filename, almacena el nombre del archivo del log de este complemento
- sql_error_log_rate, es el valor de errores que deben ocurrir antes de escribirlos en el log, en el caso de 1 significa que se escriben inmediatamente, en el caso de 10 espera a 10 errores antes de escribirlos y asi sucesivamente
- sql_error_log_rotate, indica si permite o no la rotacion del log
- sql_error_log_rotations, indica la cantidad de archivos viejos que mantendra despues de las rotaciones
- sql_error_log_size_limit, establece el tamaño maximo del archivo en bytes
Un par de detalles, el caso de sql_error_log_rate puede desactivarse con el valor de 0, esto puede ser util para cuando se generan demasiados errores y no necesitamos sobrecargar la escritura en el disco, las rotaciones ocurriran siempre y cuando se haya alcanzado el valor maximo en sql_error_log_size_limit o haya sido activado por el usuario en sql_error_log_rotate, por ultimo podemos ver los valores de estas variables mediante el siguiente comando:
MariaDB [(none)]> show variables like 'sql_error_log%';
+--------------------------+----------------+
| Variable_name | Value |
+--------------------------+----------------+
| sql_error_log_filename | sql_errors.log |
| sql_error_log_rate | 1 |
| sql_error_log_rotate | OFF |
| sql_error_log_rotations | 9 |
| sql_error_log_size_limit | 1000000 |
+--------------------------+----------------+
5 rows in set (0.002 sec)
MariaDB [(none)]>
Por ultimo, el hecho de forzar una rotacion puede ser una buena idea para la depuracion de un programa almacenado, dado que es mas practico buscar en archivos chicos que en un archivo gigante, especialmente cuando trabajamos en Unix o Linux, por ultimo les dejo un ejemplo de como es el log en un debian:
MariaDB [(none)]> \! ls /var/lib/mysql | grep errors
sql_errors.log
sql_errors.log.1
sql_errors.log.2
sql_errors.log.3
sql_errors.log.4
sql_errors.log.5
sql_errors.log.6
sql_errors.log.7
sql_errors.log.8
sql_errors.log.9
Una buena practica es utilizar los comentarios para descubrir determinados errores en el log pero el cliente de manera predeterminada los tiene anulados, por lo tanto nunca los enviara a nuestro log o por la red, para activarlos debemos usar la opcion –comment al momento de llamar al cliente para permitirlos, una vez hecho esto podemos ejecutar algun comando de la siguiente forma:
MariaDB [(none)]> select titulo from curso.alumnos /* test02 */;
En este caso ejecutamos un select que nos devolvera un error pero que poseera un comentario llamado test02, si vamos al archivo log y lo buscamos de la siguiente forma:
tinchicus@dbn001vrt:~$ sudo cat /var/lib/mysql/sql_errors.log | grep test02
Esta es una de las de ventajas de Unix, al momento de mostrar el archivo por medio de cat usamos a grep para que devuelva unicamente el texto que posee la palabra test02, es decir nuestro comentario, veamos el resultado:
tinchicus@dbn001vrt:~$ sudo cat /var/lib/mysql/sql_errors.log | grep test02
2021-07-18 13:14:21 tinchicus[tinchicus] @ localhost [] ERROR 1054: Unknown column 'titulo' in 'field list' : select titulo from curso.alumnos /* test02 */
tinchicus@dbn001vrt:~$
Como pueden observar solo nos trajo el error que posee el comentario ignorando todo el resto, es decir que utilizando correctamente los comentarios podemos hacer un mejor seguimiento de nuestro errores, por ultimo observen como la linea nos detalla la fecha y hora (siempre en formato sql), seguido del usuario, el codigo de error y la descripcion del mismo.
En resumen, hoy hemos visto al plug-in sql_error_log, como instalarlo, como se compone, como trabaja, que nos permite, algunas posibilidades que nos brinda para buenas practicas, y como aprovechar estas posibilidades, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
