Browse Source

Merge pull request #2214 from nextcloud/remove-logging

remove old logging section
tags/v11.0RC2
Robin Appelman 7 years ago
parent
commit
cd24010fa4

+ 0
- 86
lib/private/Settings/Admin/Logging.php View File

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

+ 0
- 6
lib/private/Settings/Manager.php View File

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

+ 0
- 57
settings/Controller/LogSettingsController.php View File

@@ -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
*

+ 0
- 88
settings/templates/admin/logging.php View File

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

+ 0
- 89
tests/Settings/Controller/LogSettingsControllerTest.php View File

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

+ 0
- 91
tests/lib/Settings/Admin/LoggingTest.php View File

@@ -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());
}
}

+ 0
- 1
tests/lib/Settings/ManagerTest.php View File

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

Loading…
Cancel
Save