diff options
author | Morris Jobke <hey@morrisjobke.de> | 2015-01-09 00:33:22 +0100 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2015-01-09 00:33:22 +0100 |
commit | 6a5f12beca175a0b9a951fa844eacfd21a8df3de (patch) | |
tree | 8e1b1b00109daaa1c7dd1f24f3f585d94c7a5b52 /settings/controller | |
parent | 5311d92c5c9dc0de297e36e4009b1e99f386e6bd (diff) | |
parent | f579f2bd948ca73a1af720e19517af9bdde11748 (diff) | |
download | nextcloud-server-6a5f12beca175a0b9a951fa844eacfd21a8df3de.tar.gz nextcloud-server-6a5f12beca175a0b9a951fa844eacfd21a8df3de.zip |
Merge pull request #12988 from owncloud/logfile_download
Logfile download
Diffstat (limited to 'settings/controller')
-rw-r--r-- | settings/controller/logsettingscontroller.php | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/settings/controller/logsettingscontroller.php b/settings/controller/logsettingscontroller.php new file mode 100644 index 00000000000..759b466682c --- /dev/null +++ b/settings/controller/logsettingscontroller.php @@ -0,0 +1,126 @@ +<?php +/** + * @author Georg Ehrke + * @copyright 2014 Georg Ehrke <georg@ownCloud.com> + * + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Settings\Controller; + +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http; +use OCP\AppFramework\Http\JSONResponse; +use OCP\AppFramework\Http\DataDownloadResponse; +use OCP\IL10N; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\IRequest; +use OCP\IConfig; + +/** + * Class LogSettingsController + * + * @package OC\Settings\Controller + */ +class LogSettingsController extends Controller { + /** + * @var \OCP\IConfig + */ + private $config; + + /** + * @var \OCP\IL10N + */ + private $l10n; + + /** + * @var \OCP\ITimeFactory + */ + private $timefactory; + + /** + * @param string $appName + * @param IRequest $request + * @param IConfig $config + */ + public function __construct($appName, + IRequest $request, + IConfig $config, + IL10N $l10n, + ITimeFactory $timeFactory) { + + parent::__construct($appName, $request); + $this->config = $config; + $this->l10n = $l10n; + $this->timefactory = $timeFactory; + } + + /** + * set log level for logger + * + * @param int $level + * @return JSONResponse + */ + public function setLogLevel($level) { + if ($level < 0 || $level > 4) { + return new JSONResponse([ + 'message' => (string) $this->l10n->t('log-level out of allowed range'), + ], Http::STATUS_BAD_REQUEST); + } + + $this->config->setSystemValue('loglevel', $level); + return new JSONResponse([ + 'level' => $level, + ]); + } + + /** + * get log entries from logfile + * + * @param int $count + * @param int $offset + * @return JSONResponse + */ + public function getEntries($count=50, $offset=0) { + return new JSONResponse([ + 'data' => \OC_Log_Owncloud::getEntries($count, $offset), + 'remain' => count(\OC_Log_Owncloud::getEntries(1, $offset + $count)) !== 0, + ]); + } + + /** + * download logfile + * + * @NoCSRFRequired + * + * @return DataDownloadResponse + */ + public function download() { + return new DataDownloadResponse( + json_encode(\OC_Log_Owncloud::getEntries(null, null)), + $this->getFilenameForDownload(), + 'application/json' + ); + } + + /** + * get filename for the logfile that's being downloaded + * + * @param int $timestamp (defaults to time()) + * @return string + */ + private function getFilenameForDownload($timestamp=null) { + $instanceId = $this->config->getSystemValue('instanceid'); + + $filename = implode([ + 'ownCloud', + $instanceId, + (!is_null($timestamp)) ? $timestamp : $this->timefactory->getTime() + ], '-'); + $filename .= '.log'; + + return $filename; + } +} |