. * * @package LibreNMS * @link http://librenms.org * @copyright 2018 Tony Murray * @author Tony Murray */ namespace LibreNMS\Util; use App; use Illuminate\Database\Events\QueryExecuted; use LibreNMS\Config; use LibreNMS\DB\Eloquent; use Log; class Laravel { public static function bootCli() { // make sure Laravel isn't already booted if (class_exists('App') && App::isBooted()) { return; } define('LARAVEL_START', microtime(true)); $install_dir = realpath(__DIR__ . '/../..'); $app = require_once $install_dir . '/bootstrap/app.php'; $kernel = $app->make(\Illuminate\Contracts\Console\Kernel::class); $kernel->bootstrap(); } public static function enableQueryDebug() { $db = Eloquent::DB(); if ($db && !$db->getEventDispatcher()->hasListeners('Illuminate\Database\Events\QueryExecuted')) { $db->listen(function (QueryExecuted $query) { // collect bindings and make them a little more readable $bindings = collect($query->bindings)->map(function ($item) { if ($item instanceof \Carbon\Carbon) { return $item->toDateTimeString(); } return $item; })->toJson(); if (class_exists('Log')) { Log::debug("SQL[%Y{$query->sql} %y$bindings%n {$query->time}ms] \n", ['color' => true]); } else { c_echo("SQL[%Y{$query->sql} %y$bindings%n {$query->time}ms] \n"); } }); } } public static function disableQueryDebug() { $db = Eloquent::DB(); if ($db) { // remove all query executed event handlers $db->getEventDispatcher()->flush('Illuminate\Database\Events\QueryExecuted'); } } public static function enableCliDebugOutput() { if (class_exists('\Log') && App::runningInConsole()) { Log::setDefaultDriver('console'); } } public static function disableCliDebugOutput() { if (class_exists('Log')) { Log::setDefaultDriver('logfile'); } } }