Necesitamos ampliar algunas funciones del logger, así como moverlo fuera de la carpeta Core/Base. La nueva clase se llamará Core/Logger y será una copia del MiniLog, pero con las siguientes funciones adicionales:
En ocasiones necesitamos obtener los últimos mensajes que se han añadido al log, por ejemplo cuando al guardar una factura el save() devuelve false y no sabemos por qué. Con Logger::readLast() podremos obtener el último mensaje añadido al log.
Logger::readLast(); // devuelve un array un único elemento. El último mensaje añadido al log
Logger::readLast(5); // devuelve un array con los 5 últimos mensaje añadidos al log
Logger::readLast(2, 'database'); // devuelve un array con los 2 últimos mensajes añadido al log en el canal database
Logger::readLast(2, 'database', 'error'); // devuelve un array con los 2 últimos errores añadido al log en el canal database
Cuando queremos añádir un mensaje a varios canales, podemos hacer la misma llamada al logger para cada canal. O bien podemos usar la función de copy():
Tools::log('channel1')->error('error-1');
Tools::log('channel2')->error('error-1');
Tools::log('channel1')->error('error-1')->copy('channel-2');
Ahora mismo cuando tenemos más de 5000 mensajes en el log, se guardan en la base de datos y se limpia la lista, para reducir el uso de memoria RAM. Esto supone un problema, ya que limpia todo, sin hacerlo por canal. Por ejemplo, cuando aprobamos docuenas de albaranes, es fácil que supere los 5000 mensajes en el log, con lo que al ver la lista de consultas SQL de la base de datos, no la tenemos completa.
Necesitamos que cuando se superen los 5000 mensajes, se guarden en un archivo temporal en MyFiles/Tmp. Y que cuando llamemos a la función read(), se lea primero del archivo y después de memoria. De esta forma podemos mantener la lista completa de mensajes, sin consumir demasiada memoria.
El Logger se debe mover a Core, el contrato a Core/Contract y la clase LogStorage se debe mover a Core/Lib.
Esta tarea fue aprobada el 03-10-2024 y está pendiente para comenzar el desarrollo el 26-11-2024.