From 5acb38b5b324a76d757074402da69f428712efd6 Mon Sep 17 00:00:00 2001
From: Morris Jobke <hey@morrisjobke.de>
Date: Tue, 29 Sep 2015 14:35:32 +0200
Subject: [PATCH] [upgrade] switch to debug logging on upgrade

* resets afterwards
* adds output about the previous log level
---
 core/ajax/update.php     |  6 ++++++
 core/command/upgrade.php |  6 ++++++
 lib/private/updater.php  | 16 ++++++++++++++++
 3 files changed, 28 insertions(+)

diff --git a/core/ajax/update.php b/core/ajax/update.php
index a693deeb9cf..ff18d2bc04b 100644
--- a/core/ajax/update.php
+++ b/core/ajax/update.php
@@ -88,6 +88,12 @@ if (OC::checkUpgrade(false)) {
 		$eventSource->close();
 		OC_Config::setValue('maintenance', false);
 	});
+	$updater->listen('\OC\Updater', 'setDebugLogLevel', function ($logLevel, $logLevelName) use($eventSource, $l) {
+		$eventSource->send('success', (string)$l->t('Set log level to debug - current level: "%s"', [ $logLevelName ]));
+	});
+	$updater->listen('\OC\Updater', 'resetLogLevel', function ($logLevel, $logLevelName) use($eventSource, $l) {
+		$eventSource->send('success', (string)$l->t('Reset log level to  "%s"', [ $logLevelName ]));
+	});
 
 	try {
 		$updater->upgrade();
diff --git a/core/command/upgrade.php b/core/command/upgrade.php
index 44e0b66c17c..fa160d9a1c0 100644
--- a/core/command/upgrade.php
+++ b/core/command/upgrade.php
@@ -177,6 +177,12 @@ class Upgrade extends Command {
 			$updater->listen('\OC\Updater', 'failure', function ($message) use($output, $self) {
 				$output->writeln("<error>$message</error>");
 			});
+			$updater->listen('\OC\Updater', 'setDebugLogLevel', function ($logLevel, $logLevelName) use($output) {
+				$output->writeln("<info>Set log level to debug - current level: '$logLevelName'</info>");
+			});
+			$updater->listen('\OC\Updater', 'resetLogLevel', function ($logLevel, $logLevelName) use($output) {
+				$output->writeln("<info>Reset log level to '$logLevelName'</info>");
+			});
 
 			if(OutputInterface::VERBOSITY_NORMAL < $output->getVerbosity()) {
 				$updater->listen('\OC\Updater', 'repairInfo', function ($message) use($output) {
diff --git a/lib/private/updater.php b/lib/private/updater.php
index b33180c3425..8aa8b0703d7 100644
--- a/lib/private/updater.php
+++ b/lib/private/updater.php
@@ -32,6 +32,7 @@
 
 namespace OC;
 
+use OC\Core\Command\Log\Manage;
 use OC\Hooks\BasicEmitter;
 use OC_App;
 use OC_Installer;
@@ -69,6 +70,14 @@ class Updater extends BasicEmitter {
 	/** @var bool */
 	private $skip3rdPartyAppsDisable;
 
+	private $logLevelNames = [
+		0 => 'Debug',
+		1 => 'Info',
+		2 => 'Warning',
+		3 => 'Error',
+		4 => 'Fatal',
+	];
+
 	/**
 	 * @param HTTPHelper $httpHelper
 	 * @param IConfig $config
@@ -177,6 +186,10 @@ class Updater extends BasicEmitter {
 	 * @return bool true if the operation succeeded, false otherwise
 	 */
 	public function upgrade() {
+		$logLevel = $this->config->getSystemValue('loglevel', \OCP\Util::WARN);
+		$this->emit('\OC\Updater', 'setDebugLogLevel', [ $logLevel, $this->logLevelNames[$logLevel] ]);
+		$this->config->setSystemValue('loglevel', \OCP\Util::DEBUG);
+
 		$wasMaintenanceModeEnabled = $this->config->getSystemValue('maintenance', false);
 
 		if(!$wasMaintenanceModeEnabled) {
@@ -208,6 +221,9 @@ class Updater extends BasicEmitter {
 			$this->emit('\OC\Updater', 'maintenanceActive');
 		}
 
+		$this->emit('\OC\Updater', 'resetLogLevel', [ $logLevel, $this->logLevelNames[$logLevel] ]);
+		$this->config->setSystemValue('loglevel', $logLevel);
+
 		return $success;
 	}
 
-- 
GitLab