remove old logging sectiontags/v11.0RC2
@@ -1,86 +0,0 @@ | |||
<?php | |||
/** | |||
* @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> | |||
* | |||
* @author Arthur Schiwon <blizzz@arthur-schiwon.de> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace OC\Settings\Admin; | |||
use OC\Log\File as LogFile; | |||
use OCP\AppFramework\Http\TemplateResponse; | |||
use OCP\IConfig; | |||
use OCP\Settings\ISettings; | |||
class Logging implements ISettings { | |||
/** @var IConfig */ | |||
private $config; | |||
/** | |||
* @param IConfig $config | |||
*/ | |||
public function __construct(IConfig $config) { | |||
$this->config = $config; | |||
} | |||
/** | |||
* @return TemplateResponse | |||
*/ | |||
public function getForm() { | |||
$logType = $this->config->getSystemValue('log_type', 'file'); | |||
$showLog = ($logType === 'file' || $logType === 'owncloud'); | |||
$numEntriesToLoad = 5; | |||
$entries = LogFile::getEntries($numEntriesToLoad + 1); | |||
$entriesRemaining = count($entries) > $numEntriesToLoad; | |||
$entries = array_slice($entries, 0, $numEntriesToLoad); | |||
$logFileExists = file_exists(LogFile::getLogFilePath()) ; | |||
$logFileSize = $logFileExists ? filesize(LogFile::getLogFilePath()) : 0; | |||
$parameters = [ | |||
'loglevel' => $this->config->getSystemValue('loglevel', 2), | |||
'entries' => $entries, | |||
'entriesremain' => $entriesRemaining, | |||
'doesLogFileExist' => $logFileExists, | |||
'logFileSize' => $logFileSize, | |||
'showLog' => $showLog, | |||
]; | |||
return new TemplateResponse('settings', 'admin/logging', $parameters, ''); | |||
} | |||
/** | |||
* @return string the section ID, e.g. 'sharing' | |||
*/ | |||
public function getSection() { | |||
return 'logging'; | |||
} | |||
/** | |||
* @return int whether the form should be rather on the top or bottom of | |||
* the admin section. The forms are arranged in ascending order of the | |||
* priority values. It is required to return a value between 0 and 100. | |||
* | |||
* E.g.: 70 | |||
*/ | |||
public function getPriority() { | |||
return 0; | |||
} | |||
} |
@@ -332,7 +332,6 @@ class Manager implements IManager { | |||
0 => [new Section('server', $this->l->t('Server settings'), 0)], | |||
5 => [new Section('sharing', $this->l->t('Sharing'), 0)], | |||
45 => [new Section('encryption', $this->l->t('Encryption'), 0)], | |||
90 => [new Section('logging', $this->l->t('Logging'), 0)], | |||
98 => [new Section('additional', $this->l->t('Additional settings'), 0)], | |||
99 => [new Section('tips-tricks', $this->l->t('Tips & tricks'), 0)], | |||
]; | |||
@@ -382,11 +381,6 @@ class Manager implements IManager { | |||
$form = new Admin\Sharing($this->config); | |||
$forms[$form->getPriority()] = [$form]; | |||
} | |||
if($section === 'logging') { | |||
/** @var ISettings $form */ | |||
$form = new Admin\Logging($this->config); | |||
$forms[$form->getPriority()] = [$form]; | |||
} | |||
if($section === 'additional') { | |||
/** @var ISettings $form */ | |||
$form = new Admin\Additional($this->config); |
@@ -41,63 +41,6 @@ use OCP\IConfig; | |||
* @package OC\Settings\Controller | |||
*/ | |||
class LogSettingsController extends Controller { | |||
/** | |||
* @var \OCP\IConfig | |||
*/ | |||
private $config; | |||
/** | |||
* @var \OCP\IL10N | |||
*/ | |||
private $l10n; | |||
/** | |||
* @param string $appName | |||
* @param IRequest $request | |||
* @param IConfig $config | |||
*/ | |||
public function __construct($appName, | |||
IRequest $request, | |||
IConfig $config, | |||
IL10N $l10n) { | |||
parent::__construct($appName, $request); | |||
$this->config = $config; | |||
$this->l10n = $l10n; | |||
} | |||
/** | |||
* 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\File::getEntries($count, $offset), | |||
'remain' => count(\OC\Log\File::getEntries(1, $offset + $count)) !== 0, | |||
]); | |||
} | |||
/** | |||
* download logfile | |||
* |
@@ -1,88 +0,0 @@ | |||
<?php | |||
/** | |||
* @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> | |||
* | |||
* @author Arthur Schiwon <blizzz@arthur-schiwon.de> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
/** @var \OCP\IL10N $l */ | |||
/** @var array $_ */ | |||
$levels = ['Debug', 'Info', 'Warning', 'Error', 'Fatal']; | |||
$levelLabels = [ | |||
$l->t( 'Everything (fatal issues, errors, warnings, info, debug)' ), | |||
$l->t( 'Info, warnings, errors and fatal issues' ), | |||
$l->t( 'Warnings, errors and fatal issues' ), | |||
$l->t( 'Errors and fatal issues' ), | |||
$l->t( 'Fatal issues only' ), | |||
]; | |||
?> | |||
<div class="section" id="log-section"> | |||
<h2><?php p($l->t('Log'));?></h2> | |||
<?php if ($_['showLog'] && $_['doesLogFileExist']): ?> | |||
<table id="log" class="grid"> | |||
<?php foreach ($_['entries'] as $entry): ?> | |||
<tr> | |||
<td> | |||
<?php p($levels[$entry->level]);?> | |||
</td> | |||
<td> | |||
<?php p($entry->app);?> | |||
</td> | |||
<td class="log-message"> | |||
<?php p($entry->message);?> | |||
</td> | |||
<td class="date"> | |||
<?php if(is_int($entry->time)){ | |||
p(OC_Util::formatDate($entry->time)); | |||
} else { | |||
p($entry->time); | |||
}?> | |||
</td> | |||
<td><?php isset($entry->user) ? p($entry->user) : p('--') ?></td> | |||
</tr> | |||
<?php endforeach;?> | |||
</table> | |||
<p><?php p($l->t('What to log'));?> <select name='loglevel' id='loglevel'> | |||
<?php for ($i = 0; $i < 5; $i++): | |||
$selected = ''; | |||
if ($i == $_['loglevel']): | |||
$selected = 'selected="selected"'; | |||
endif; ?> | |||
<option value='<?php p($i)?>' <?php p($selected) ?>><?php p($levelLabels[$i])?></option> | |||
<?php endfor;?> | |||
</select></p> | |||
<?php if ($_['logFileSize'] > 0): ?> | |||
<a href="<?php print_unescaped(OC::$server->getURLGenerator()->linkToRoute('settings.LogSettings.download')); ?>" class="button" id="downloadLog"><?php p($l->t('Download logfile'));?></a> | |||
<?php endif; ?> | |||
<?php if ($_['entriesremain']): ?> | |||
<input id="moreLog" type="button" value="<?php p($l->t('More'));?>..."> | |||
<input id="lessLog" type="button" value="<?php p($l->t('Less'));?>..."> | |||
<?php endif; ?> | |||
<?php if ($_['logFileSize'] > (100 * 1024 * 1024)): ?> | |||
<br> | |||
<em> | |||
<?php p($l->t('The logfile is bigger than 100 MB. Downloading it may take some time!')); ?> | |||
</em> | |||
<?php endif; ?> | |||
<?php endif; ?> | |||
</div> |
@@ -1,89 +0,0 @@ | |||
<?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 Tests\Settings\Controller; | |||
use \OC\Settings\Application; | |||
use OC\Settings\Controller\LogSettingsController; | |||
use OCP\AppFramework\Http\StreamResponse; | |||
use OCP\IConfig; | |||
use OCP\IL10N; | |||
use OCP\IRequest; | |||
/** | |||
* @package Tests\Settings\Controller | |||
*/ | |||
class LogSettingsControllerTest extends \Test\TestCase { | |||
/** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ | |||
private $config; | |||
/** @var LogSettingsController */ | |||
private $logSettingsController; | |||
protected function setUp() { | |||
parent::setUp(); | |||
$this->config = $this->createMock(IConfig::class); | |||
$l = $this->createMock(IL10N::class); | |||
$l->method('t') | |||
->will($this->returnCallback(function($text, $parameters = []) { | |||
return vsprintf($text, $parameters); | |||
})); | |||
$this->logSettingsController = new LogSettingsController( | |||
'settings', | |||
$this->createMock(IRequest::class), | |||
$this->config, | |||
$l | |||
); | |||
} | |||
/** | |||
* @dataProvider logLevelData | |||
*/ | |||
public function testSetLogLevel($level, $inRange) { | |||
if ($inRange) { | |||
$this->config->expects($this->once()) | |||
->method('setSystemValue') | |||
->with('loglevel', $level); | |||
} | |||
$response = $this->logSettingsController->setLogLevel($level)->getData(); | |||
if ($inRange) { | |||
$expectedResponse = ['level' => $level]; | |||
} else { | |||
$expectedResponse = ['message' => 'log-level out of allowed range']; | |||
} | |||
$this->assertSame($expectedResponse, $response); | |||
} | |||
public function logLevelData() { | |||
return [ | |||
[-1, false], | |||
[0, true], | |||
[1, true], | |||
[2, true], | |||
[3, true], | |||
[4, true], | |||
[5, false], | |||
]; | |||
} | |||
public function testDownload() { | |||
$response = $this->logSettingsController->download(); | |||
$this->assertInstanceOf('\OCP\AppFramework\Http\StreamResponse', $response); | |||
$headers = $response->getHeaders(); | |||
$this->assertEquals('application/octet-stream', $headers['Content-Type']); | |||
$this->assertEquals('attachment; filename="nextcloud.log"', $headers['Content-Disposition']); | |||
} | |||
} |
@@ -1,91 +0,0 @@ | |||
<?php | |||
/** | |||
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch> | |||
* | |||
* @author Lukas Reschke <lukas@statuscode.ch> | |||
* | |||
* @license GNU AGPL version 3 or any later version | |||
* | |||
* This program is free software: you can redistribute it and/or modify | |||
* it under the terms of the GNU Affero General Public License as | |||
* published by the Free Software Foundation, either version 3 of the | |||
* License, or (at your option) any later version. | |||
* | |||
* 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 | |||
* along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
* | |||
*/ | |||
namespace Test\Settings\Admin; | |||
use OC\Settings\Admin\Logging; | |||
use OCP\AppFramework\Http\TemplateResponse; | |||
use OCP\IConfig; | |||
use Test\TestCase; | |||
use OC\Log\File as LogFile; | |||
class LoggingTest extends TestCase { | |||
/** @var Logging */ | |||
private $admin; | |||
/** @var IConfig */ | |||
private $config; | |||
public function setUp() { | |||
parent::setUp(); | |||
$this->config = $this->getMockBuilder('\OCP\IConfig')->getMock(); | |||
$this->admin = new Logging( | |||
$this->config | |||
); | |||
} | |||
public function testGetForm() { | |||
$this->config | |||
->expects($this->at(0)) | |||
->method('getSystemValue') | |||
->with('log_type', 'file') | |||
->willReturn('owncloud'); | |||
$this->config | |||
->expects($this->at(1)) | |||
->method('getSystemValue') | |||
->with('loglevel', 2) | |||
->willReturn(3); | |||
$numEntriesToLoad = 5; | |||
$entries = LogFile::getEntries($numEntriesToLoad + 1); | |||
$entriesRemaining = count($entries) > $numEntriesToLoad; | |||
$entries = array_slice($entries, 0, $numEntriesToLoad); | |||
$logFileExists = file_exists(LogFile::getLogFilePath()) ; | |||
$logFileSize = $logFileExists ? filesize(LogFile::getLogFilePath()) : 0; | |||
$expected = new TemplateResponse( | |||
'settings', | |||
'admin/logging', | |||
[ | |||
'loglevel' => 3, | |||
'entries' => $entries, | |||
'entriesremain' => $entriesRemaining, | |||
'doesLogFileExist' => $logFileExists, | |||
'logFileSize' => $logFileSize, | |||
'showLog' => true, | |||
], | |||
'' | |||
); | |||
$this->assertEquals($expected, $this->admin->getForm()); | |||
} | |||
public function testGetSection() { | |||
$this->assertSame('logging', $this->admin->getSection()); | |||
} | |||
public function testGetPriority() { | |||
$this->assertSame(0, $this->admin->getPriority()); | |||
} | |||
} |
@@ -177,7 +177,6 @@ class ManagerTest extends TestCase { | |||
0 => [new Section('server', 'Server settings', 0)], | |||
5 => [new Section('sharing', 'Sharing', 0)], | |||
45 => [new Section('encryption', 'Encryption', 0)], | |||
90 => [new Section('logging', 'Logging', 0)], | |||
98 => [new Section('additional', 'Additional settings', 0)], | |||
99 => [new Section('tips-tricks', 'Tips & tricks', 0)], | |||
], $this->manager->getAdminSections()); |