<?php
namespace App\Listeners;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
class QueryListener
{
protected $log;
public function __construct()
{
$this->log = new Logger('mysql');
$dir_path = dirname(dirname(__DIR__)) . '/storage/logs/' . $this->log->getName();
if (!is_dir($dir_path)) mkdir($dir_path, 0755);
$log_path = storage_path('logs/' . $this->log->getName() . '/' . date('Y-m-d') . '.log');
if (!file_exists($log_path)) {
fopen($log_path, "w");
}
$this->log->pushHandler(new StreamHandler($log_path, Logger::DEBUG));
}
public function handle($event): void
{
if (env('APP_DEBUG') == true) {
$sql = str_replace("?", "'%s'", $event->sql);
if ($event->bindings){
$log = vsprintf($sql, $event->bindings);
}else{
$log = $sql;
}
$this->log->addRecord(Logger::DEBUG, '[' . $event->time . '] | ' . $log . ' |');
}
}
}