feat(occ): Add a --debug option to output all log levels to the output

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
Côme Chilliet 2024-06-25 17:03:19 +02:00
Родитель 72b6db4043
Коммит 2ba0819243
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: A3E2F658B28C760A
5 изменённых файлов: 62 добавлений и 2 удалений

Просмотреть файл

@ -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');

Просмотреть файл

@ -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";
}
}

Просмотреть файл

@ -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');

Просмотреть файл

@ -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',

Просмотреть файл

@ -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',