From 8fb12fb399bc6d3c60daf6f2d5da1c19926cc8ac Mon Sep 17 00:00:00 2001 From: Robin McCorkell Date: Mon, 17 Aug 2015 23:16:39 +0100 Subject: [PATCH] Introduce occ command to manage owncloud log backend log:owncloud can set/display the log filename and log file rotation size --- core/command/log/owncloud.php | 105 ++++++++++++++++++++++++++++++++++ core/register_command.php | 1 + 2 files changed, 106 insertions(+) create mode 100644 core/command/log/owncloud.php diff --git a/core/command/log/owncloud.php b/core/command/log/owncloud.php new file mode 100644 index 000000000000..d0f79c48f816 --- /dev/null +++ b/core/command/log/owncloud.php @@ -0,0 +1,105 @@ + + * + * @copyright Copyright (c) 2015, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see + * + */ + +namespace OC\Core\Command\Log; + +use \OCP\IConfig; + +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +class Owncloud extends Command { + + /** @var IConfig */ + protected $config; + + public function __construct(IConfig $config) { + $this->config = $config; + parent::__construct(); + } + + protected function configure() { + $this + ->setName('log:owncloud') + ->setDescription('manipulate owncloud logging backend') + ->addOption( + 'enable', + null, + InputOption::VALUE_NONE, + 'enable this logging backend' + ) + ->addOption( + 'file', + null, + InputOption::VALUE_REQUIRED, + 'set the log file, relative to data' + ) + ->addOption( + 'rotate-size', + null, + InputOption::VALUE_REQUIRED, + 'set the filesize for log rotation, 0 = disabled' + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $toBeSet = []; + + if ($input->getOption('enable')) { + $toBeSet['logtype'] = 'owncloud'; + } + + if ($file = $input->getOption('file')) { + $toBeSet['log_file'] = $file; + } + + if (($rotateSize = $input->getOption('rotate-size')) !== null) { + $toBeSet['log_rotate_size'] = \OCP\Util::computerFileSize($rotateSize); + } + + // set config + foreach ($toBeSet as $option => $value) { + $this->config->setSystemValue($option, $value); + } + + // display config + if ($this->config->getSystemValue('logtype', 'owncloud') === 'owncloud') { + $enabledText = 'enabled'; + } else { + $enabledText = 'disabled'; + } + $output->writeln('Log backend owncloud: '.$enabledText); + + $output->writeln('Log file: '.$this->config->getSystemValue('log_file', 'owncloud.log')); + + $rotateSize = $this->config->getSystemValue('log_rotate_size', 0); + if ($rotateSize) { + $rotateString = \OCP\Util::humanFileSize($rotateSize); + } else { + $rotateString = 'disabled'; + } + $output->writeln('Rotate at: '.$rotateString); + } +} diff --git a/core/register_command.php b/core/register_command.php index b05d0f3aebbd..494529836703 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -59,6 +59,7 @@ $application->add(new OC\Core\Command\Encryption\Status(\OC::$server->getEncryptionManager())); $application->add(new OC\Core\Command\Log\Manage(\OC::$server->getConfig())); + $application->add(new OC\Core\Command\Log\Owncloud(\OC::$server->getConfig())); $application->add(new OC\Core\Command\Maintenance\MimeTypesJS()); $application->add(new OC\Core\Command\Maintenance\Mode(\OC::$server->getConfig()));