- Activar registro de logs para las consultas
- Activar fichero de log personalizado para las consultas sql
Activar registro de logs para las consultas
Para activar el registro de consultas que se envían a la base de datos hay que poner el siguiente código en nuestro proyecto de Laravel.En el fichero de configuración .env
APP_DEBUG=true
Porque aunque he dicho "si es necesario" .. normalmente esto lo utilizaremos en desarrollo, por eso, en el fichero .env nos aseguramos que estamos en desarrollo y activado el debug.Ahora en el fichero app/Providers/AppServiceProvider.php en el método boot ponemos el siguiente código:
...
use Illuminate\Support\Facades\Log;
...
public function boot()
{
if (env('APP_DEBUG')) {
DB::listen(function ($query) {
\Log::info("Query Time:{$query->time}ms] $query->sql", $query->bindings);
// Para mostrar las consultas en la consola
// echo "Query Time:{$query->time}ms] $query->sql";
});
}
}
Comentado dejo el código si se quiere mostrar la consulta por pantalla.
$query->bindings indica, guarda, los parámetros que se le pasa a la consulta.
use Illuminate\Support\Facades\Log; lo pondremos arriba de todo de la clase donde están el resto de use
Esto nos creará una entrada en el log storage/logs/laravel.log por cada consulta que se envíe a la base de datos, y se verá de la siguiente forma:
Y ya estaría, cada query se guarda en el log ... Pero no esta, porque meterlo todo en el mismo log, por lo menos a mi, me lía, así que vamos a crear un log solo para las consultas sql.
Activar fichero de log personalizado para las consultas sql
Para crear un log personalizado vamos al fichero config/logging.php y añadimos el siguiente código en el array channels:
'sql' => [
'driver' => 'daily',
'path' => storage_path('logs/sql.log'),
'level' => 'debug',
],
Con esto le decimos a Laravel que nos cree un log diario en la ruta storage/logs/ y se llamará sql.log
Ahora tenemos que modificar el código anterior del app/Providers/AppServiceProvider.php para decirle en que log queremos guardar los registros de las consultas sql.
public function boot()
{
if (env('APP_DEBUG')) {
DB::listen(function ($query) {
Log::channel('sql')->info("Query Time:{$query->time}s] $query->sql", $query->bindings);
// Para mostrar las consultas en la consola
// echo "Query Time:{$query->time}s] $query->sql";
});
}
}
Con Log::channel('sql') le decimos en que log, configurado en el fichero de configuración config/logging.php, queremos utilizar.
Y esto es todo, feliz programming
Saludos
Alex
/ :-)
También puede interesarte:
Configurar Laravel Sail para utilizar un MySql externo existente |
||