From 5cdc49df1b2d24d1061e19017b520f98fe94fd8c Mon Sep 17 00:00:00 2001 From: Tony Murray Date: Wed, 9 Jan 2019 19:36:32 -0600 Subject: [PATCH] Hook up librenms cli debug (#9632) * Hook up librenms cli debug * forgot to add function exists check, good travis-ci :) --- LibreNMS/Util/Laravel.php | 2 +- app/Console/Kernel.php | 14 ++++++++++ includes/functions.php | 58 ++++++++++++++++++++------------------- includes/helpers.php | 38 +++++++++++++++++++++++++ 4 files changed, 83 insertions(+), 29 deletions(-) diff --git a/LibreNMS/Util/Laravel.php b/LibreNMS/Util/Laravel.php index 242923ba42..b215ddebde 100644 --- a/LibreNMS/Util/Laravel.php +++ b/LibreNMS/Util/Laravel.php @@ -83,7 +83,7 @@ class Laravel public static function enableCliDebugOutput() { - if (class_exists('Log')) { + if (class_exists('\Log')) { $logger = Log::getMonolog(); // only install if not existing diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index a0c96a33dc..f127be92ca 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -51,4 +51,18 @@ class Kernel extends ConsoleKernel return $this->artisan; } + + public function handle($input, $output = null) + { + // intercept input and check for debug + if ($input->hasParameterOption(['-d', '--debug', '-vv', '-vvv'], true)) { + if ($input->hasParameterOption(['-vvv'], true)) { + global $vdebug; + $vdebug = true; + } + $this->app->booted('set_debug'); + } + + return parent::handle($input, $output); + } } diff --git a/includes/functions.php b/includes/functions.php index 5ca3489805..9f30932c2b 100644 --- a/includes/functions.php +++ b/includes/functions.php @@ -24,40 +24,42 @@ use LibreNMS\Exceptions\SnmpVersionUnsupportedException; use LibreNMS\Util\MemcacheLock; use Symfony\Component\Process\Process; -/** - * Set debugging output - * - * @param bool $state If debug is enabled or not - * @param bool $silence When not debugging, silence every php error - * @return bool - */ -function set_debug($state = true, $silence = false) -{ - global $debug; +if (!function_exists('set_debug')) { + /** + * Set debugging output + * + * @param bool $state If debug is enabled or not + * @param bool $silence When not debugging, silence every php error + * @return bool + */ + function set_debug($state = true, $silence = false) + { + global $debug; - $debug = $state; // set to global + $debug = $state; // set to global - restore_error_handler(); // disable Laravel error handler + restore_error_handler(); // disable Laravel error handler - if (isset($debug) && $debug) { - ini_set('display_errors', 1); - ini_set('display_startup_errors', 1); - ini_set('log_errors', 0); - error_reporting(E_ALL & ~E_NOTICE); + if (isset($debug) && $debug) { + ini_set('display_errors', 1); + ini_set('display_startup_errors', 1); + ini_set('log_errors', 0); + error_reporting(E_ALL & ~E_NOTICE); - \LibreNMS\Util\Laravel::enableCliDebugOutput(); - \LibreNMS\Util\Laravel::enableQueryDebug(); - } else { - ini_set('display_errors', 0); - ini_set('display_startup_errors', 0); - ini_set('log_errors', 1); - error_reporting($silence ? 0 : E_ERROR); + \LibreNMS\Util\Laravel::enableCliDebugOutput(); + \LibreNMS\Util\Laravel::enableQueryDebug(); + } else { + ini_set('display_errors', 0); + ini_set('display_startup_errors', 0); + ini_set('log_errors', 1); + error_reporting($silence ? 0 : E_ERROR); - \LibreNMS\Util\Laravel::disableCliDebugOutput(); - \LibreNMS\Util\Laravel::disableQueryDebug(); + \LibreNMS\Util\Laravel::disableCliDebugOutput(); + \LibreNMS\Util\Laravel::disableQueryDebug(); + } + + return $debug; } - - return $debug; }//end set_debug() function array_sort_by_column($array, $on, $order = SORT_ASC) diff --git a/includes/helpers.php b/includes/helpers.php index e021bf0d71..39d6689b2e 100644 --- a/includes/helpers.php +++ b/includes/helpers.php @@ -46,3 +46,41 @@ if (!function_exists('d_echo')) { } } } + +if (!function_exists('set_debug')) { + /** + * Set debugging output + * + * @param bool $state If debug is enabled or not + * @param bool $silence When not debugging, silence every php error + * @return bool + */ + function set_debug($state = true, $silence = false) + { + global $debug; + + $debug = $state; // set to global + + restore_error_handler(); // disable Laravel error handler + + if ($debug) { + ini_set('display_errors', 1); + ini_set('display_startup_errors', 1); + ini_set('log_errors', 0); + error_reporting(E_ALL & ~E_NOTICE); + + \LibreNMS\Util\Laravel::enableCliDebugOutput(); + \LibreNMS\Util\Laravel::enableQueryDebug(); + } else { + ini_set('display_errors', 0); + ini_set('display_startup_errors', 0); + ini_set('log_errors', 1); + error_reporting($silence ? 0 : E_ERROR); + + \LibreNMS\Util\Laravel::disableCliDebugOutput(); + \LibreNMS\Util\Laravel::disableQueryDebug(); + } + + return $debug; + } +}