diff options
author | Côme Chilliet <come.chilliet@nextcloud.com> | 2024-06-25 17:03:19 +0200 |
---|---|---|
committer | Côme Chilliet <come.chilliet@nextcloud.com> | 2024-07-02 15:03:18 +0200 |
commit | 2ba0819243cfe5eedf148b6ff19d5070f1ff7844 (patch) | |
tree | 08aa972fb13182e132e5d9e97fd92216e79224db | |
parent | 72b6db40435ce0407d0aafa626945d4f2380460f (diff) | |
download | nextcloud-server-2ba0819243cfe5eedf148b6ff19d5070f1ff7844.tar.gz nextcloud-server-2ba0819243cfe5eedf148b6ff19d5070f1ff7844.zip |
feat(occ): Add a --debug option to output all log levels to the output
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
-rw-r--r-- | console.php | 12 | ||||
-rw-r--r-- | core/Listener/BeforeMessageLoggedEventListener.php | 38 | ||||
-rw-r--r-- | lib/base.php | 12 | ||||
-rw-r--r-- | lib/composer/composer/autoload_classmap.php | 1 | ||||
-rw-r--r-- | lib/composer/composer/autoload_static.php | 1 |
5 files changed, 62 insertions, 2 deletions
diff --git a/console.php b/console.php index 7b067a84a35..d6f5ee58efb 100644 --- a/console.php +++ b/console.php @@ -75,13 +75,21 @@ try { $eventLogger->start('console:build_application', 'Build Application instance and load commands'); $application = \OCP\Server::get(Application::class); - $application->loadCommands(new ArgvInput(), new ConsoleOutput()); + $argv = $_SERVER['argv']; + if (($key = array_search('--debug', $argv)) !== false) { + // Remove --debug option if it was passed + unset($argv[$key]); + $argv = array_values($argv); + } + + $input = new ArgvInput($argv); + $application->loadCommands($input, new ConsoleOutput()); $eventLogger->end('console:build_application'); $eventLogger->start('console:run', 'Run the command'); $application->setAutoExit(false); - $exitCode = $application->run(); + $exitCode = $application->run($input); $eventLogger->end('console:run'); diff --git a/core/Listener/BeforeMessageLoggedEventListener.php b/core/Listener/BeforeMessageLoggedEventListener.php new file mode 100644 index 00000000000..d6ebcfa50ad --- /dev/null +++ b/core/Listener/BeforeMessageLoggedEventListener.php @@ -0,0 +1,38 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace OC\Core\Listener; + +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventListener; +use OCP\Log\BeforeMessageLoggedEvent; + +/** + * Listen to log calls and output them to STDOUT for debug purposes + * @template-implements IEventListener<BeforeMessageLoggedEvent> + */ +class BeforeMessageLoggedEventListener implements IEventListener { + public function handle(Event $event): void { + if (!$event instanceof BeforeMessageLoggedEvent) { + return; + } + echo + match($event->getLevel()) { + 0 => '[debug]', + 1 => '[info]', + 2 => '[warning]', + 3 => '[error]', + 4 => '[fatal]', + default => '['.$event->getLevel().']', + } + .' ['.$event->getApp().'] ' + .$event->getMessage()['message'] + ."\n"; + } +} diff --git a/lib/base.php b/lib/base.php index 91ca87426e1..894d9b7279f 100644 --- a/lib/base.php +++ b/lib/base.php @@ -63,6 +63,7 @@ class OC { * check if Nextcloud runs in cli mode */ public static bool $CLI = false; + public static bool $CLI_DEBUG = false; public static \OC\Autoloader $loader; @@ -556,6 +557,12 @@ class OC { self::$composerAutoloader = require_once OC::$SERVERROOT . '/lib/composer/autoload.php'; self::$composerAutoloader->setApcuPrefix(null); + if (self::$CLI && ($key = array_search('--debug', $_SERVER['argv'])) !== false) { + self::$CLI_DEBUG = true; + } else { + self::$CLI_DEBUG = false; + } + try { self::initPaths(); // setup 3rdparty autoloader @@ -578,6 +585,11 @@ class OC { self::$server = new \OC\Server(\OC::$WEBROOT, self::$config); self::$server->boot(); + if (self::$CLI_DEBUG) { + $eventDispatcher = \OCP\Server::get(IEventDispatcher::class); + $eventDispatcher->addServiceListener(\OCP\Log\BeforeMessageLoggedEvent::class, \OC\Core\Listener\BeforeMessageLoggedEventListener::class); + } + $eventLogger = Server::get(\OCP\Diagnostics\IEventLogger::class); $eventLogger->log('autoloader', 'Autoloader', $loaderStart, $loaderEnd); $eventLogger->start('boot', 'Initialize'); diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 9fa3b5bf765..322bae15fae 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -1236,6 +1236,7 @@ return array( 'OC\\Core\\Events\\PasswordResetEvent' => $baseDir . '/core/Events/PasswordResetEvent.php', 'OC\\Core\\Exception\\LoginFlowV2NotFoundException' => $baseDir . '/core/Exception/LoginFlowV2NotFoundException.php', 'OC\\Core\\Exception\\ResetPasswordException' => $baseDir . '/core/Exception/ResetPasswordException.php', + 'OC\\Core\\Listener\\BeforeMessageLoggedEventListener' => $baseDir . '/core/Listener/BeforeMessageLoggedEventListener.php', 'OC\\Core\\Listener\\BeforeTemplateRenderedListener' => $baseDir . '/core/Listener/BeforeTemplateRenderedListener.php', 'OC\\Core\\Middleware\\TwoFactorMiddleware' => $baseDir . '/core/Middleware/TwoFactorMiddleware.php', 'OC\\Core\\Migrations\\Version13000Date20170705121758' => $baseDir . '/core/Migrations/Version13000Date20170705121758.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 38d06cbc9e3..2334c0bb7e8 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -1269,6 +1269,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 'OC\\Core\\Events\\PasswordResetEvent' => __DIR__ . '/../../..' . '/core/Events/PasswordResetEvent.php', 'OC\\Core\\Exception\\LoginFlowV2NotFoundException' => __DIR__ . '/../../..' . '/core/Exception/LoginFlowV2NotFoundException.php', 'OC\\Core\\Exception\\ResetPasswordException' => __DIR__ . '/../../..' . '/core/Exception/ResetPasswordException.php', + 'OC\\Core\\Listener\\BeforeMessageLoggedEventListener' => __DIR__ . '/../../..' . '/core/Listener/BeforeMessageLoggedEventListener.php', 'OC\\Core\\Listener\\BeforeTemplateRenderedListener' => __DIR__ . '/../../..' . '/core/Listener/BeforeTemplateRenderedListener.php', 'OC\\Core\\Middleware\\TwoFactorMiddleware' => __DIR__ . '/../../..' . '/core/Middleware/TwoFactorMiddleware.php', 'OC\\Core\\Migrations\\Version13000Date20170705121758' => __DIR__ . '/../../..' . '/core/Migrations/Version13000Date20170705121758.php', |