Changed LogEntries table: Use log level instead of nick name

This commit is contained in:
Igor Scheller 2017-09-19 19:33:24 +02:00
parent b3b65743cd
commit e6ed8a3017
9 changed files with 45 additions and 42 deletions

View File

@ -28,3 +28,6 @@ UPDATE `Groups` SET UID = UID * 10;
INSERT INTO `Groups` (Name, UID) VALUES ('News Admin', -65); INSERT INTO `Groups` (Name, UID) VALUES ('News Admin', -65);
INSERT INTO `Privileges` (id, name, `desc`) VALUES (42, 'admin_news_html', 'Use HTML in news'); INSERT INTO `Privileges` (id, name, `desc`) VALUES (42, 'admin_news_html', 'Use HTML in news');
INSERT INTO `GroupPrivileges` (group_id, privilege_id) VALUES (-65, 14), (-65, 42); INSERT INTO `GroupPrivileges` (group_id, privilege_id) VALUES (-65, 14), (-65, 42);
-- Add log level to LogEntries
ALTER TABLE `LogEntries` CHANGE COLUMN `nick` `level` VARCHAR(20) NOT NULL;

View File

@ -5,16 +5,16 @@ use Engelsystem\Database\DB;
/** /**
* Creates a log entry. * Creates a log entry.
* *
* @param string $nick Username * @param string $logLevel Log level
* @param string $message Log Message * @param string $message Log Message
* @return bool * @return bool
*/ */
function LogEntry_create($nick, $message) function LogEntry_create($logLevel, $message)
{ {
return DB::insert(' return DB::insert('
INSERT INTO `LogEntries` (`timestamp`, `nick`, `message`) INSERT INTO `LogEntries` (`timestamp`, `level`, `message`)
VALUES(?, ?, ?) VALUES(?, ?, ?)
', [time(), $nick, $message]); ', [time(), $logLevel, $message]);
} }
/** /**
@ -43,7 +43,7 @@ function LogEntries_filter($keyword)
return DB::select(' return DB::select('
SELECT * SELECT *
FROM `LogEntries` FROM `LogEntries`
WHERE `nick` LIKE ? WHERE `level` LIKE ?
OR `message` LIKE ? OR `message` LIKE ?
ORDER BY `timestamp` DESC ORDER BY `timestamp` DESC
', ',

View File

@ -17,12 +17,10 @@ function admin_log()
if (request()->has('keyword')) { if (request()->has('keyword')) {
$filter = strip_request_item('keyword'); $filter = strip_request_item('keyword');
} }
$log_entries_source = LogEntries_filter($filter); $log_entries = LogEntries_filter($filter);
$log_entries = []; foreach ($log_entries as &$log_entry) {
foreach ($log_entries_source as $log_entry) {
$log_entry['date'] = date('d.m.Y H:i', $log_entry['timestamp']); $log_entry['date'] = date('d.m.Y H:i', $log_entry['timestamp']);
$log_entries[] = $log_entry;
} }
return page_with_title(admin_log_title(), [ return page_with_title(admin_log_title(), [
@ -33,7 +31,7 @@ function admin_log()
]), ]),
table([ table([
'date' => 'Time', 'date' => 'Time',
'nick' => 'Angel', 'level' => 'Type',
'message' => 'Log Entry' 'message' => 'Log Entry'
], $log_entries) ], $log_entries)
]); ]);

View File

@ -9,10 +9,12 @@
function engelsystem_log($message) function engelsystem_log($message)
{ {
global $user; global $user;
$nick = "Guest"; $nick = "Guest";
$logger = app('logger');
if (isset($user)) { if (isset($user)) {
$nick = User_Nick_render($user); $nick = User_Nick_render($user);
} }
LogEntry_create($nick, $message);
$logger->info('{nick}: {message}', ['nick' => $nick, 'message' => $message]);
} }

View File

@ -7,6 +7,9 @@
<testsuite name="Models"> <testsuite name="Models">
<directory>./test/model/</directory> <directory>./test/model/</directory>
</testsuite> </testsuite>
<testsuite name="Logger">
<directory>./test/Logger/</directory>
</testsuite>
</testsuites> </testsuites>
<filter> <filter>
<whitelist> <whitelist>

View File

@ -38,7 +38,7 @@ class EngelsystemLogger extends AbstractLogger
$message = $this->interpolate($message, $context); $message = $this->interpolate($message, $context);
LogEntry_create('Logger: ' . $level, $message); LogEntry_create($level, $message);
} }
/** /**

View File

@ -66,7 +66,7 @@ class EngelsystemLoggerTest extends TestCase
$entry = $this->getLastEntry(); $entry = $this->getLastEntry();
$this->assertEquals('My username is Foo', $entry['message']); $this->assertEquals('My username is Foo', $entry['message']);
$this->assertContains(LogLevel::INFO, $entry['nick'], '', true); $this->assertEquals(LogLevel::INFO, $entry['level']);
foreach ( foreach (
[ [
@ -123,4 +123,9 @@ class EngelsystemLoggerTest extends TestCase
return $entry; return $entry;
} }
public function tearDown()
{
LogEntries_clear_all();
}
} }

View File

@ -1,37 +1,32 @@
<?php <?php
namespace Engelsystem\Test; namespace Engelsystem\Test;
use \PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use Psr\Log\LogLevel;
class LogEntriesModelTest extends TestCase class LogEntriesModelTest extends TestCase
{ {
public function testCreateLogEntry()
public function create_LogEntry()
{
LogEntry_create('test', 'test');
}
public function test_LogEntry_create()
{ {
LogEntries_clear_all();
$count = count(LogEntries()); $count = count(LogEntries());
$this->assertNotFalse(LogEntry_create('test', 'test_LogEntry_create')); $this->assertNotFalse(LogEntry_create(LogLevel::WARNING, 'test_LogEntry_create'));
// There should be one more log entry now // There should be one more log entry now
$this->assertEquals(count(LogEntries()), $count + 1); $this->assertEquals(count(LogEntries()), $count + 1);
} }
public function test_LogEntries_clear_all() public function testClearAllLogEntries()
{ {
$this->create_LogEntry(); LogEntry_create(LogLevel::WARNING, 'test');
$this->assertTrue(count(LogEntries()) > 0); $this->assertTrue(count(LogEntries()) > 0);
$this->assertNotFalse(LogEntries_clear_all()); $this->assertNotFalse(LogEntries_clear_all());
$this->assertEquals(count(LogEntries()), 0); $this->assertCount(0, LogEntries());
} }
/** public function tearDown()
* @after
*/
public function teardown()
{ {
LogEntries_clear_all(); LogEntries_clear_all();
} }

View File

@ -1,11 +1,11 @@
<?php <?php
namespace Engelsystem\Test; namespace Engelsystem\Test;
use \PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
class RoomModelTest extends TestCase class RoomModelTest extends TestCase
{ {
private $room_id = null; private $room_id = null;
public function create_Room() public function create_Room()
@ -23,13 +23,10 @@ class RoomModelTest extends TestCase
$this->assertNotNull($room); $this->assertNotNull($room);
$this->assertEquals($room['Name'], 'test'); $this->assertEquals($room['Name'], 'test');
$this->assertNull(Room(- 1)); $this->assertNull(Room(-1));
} }
/** public function tearDown()
* @after
*/
public function teardown()
{ {
if ($this->room_id != null) { if ($this->room_id != null) {
Room_delete($this->room_id); Room_delete($this->room_id);