add log_console
This commit is contained in:
parent
b5bbff531c
commit
743f4d8b5a
2 changed files with 102 additions and 0 deletions
17
ext/log_console/info.php
Normal file
17
ext/log_console/info.php
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Shimmie2;
|
||||||
|
|
||||||
|
class LogConsoleInfo extends ExtensionInfo
|
||||||
|
{
|
||||||
|
public const KEY = "log_console";
|
||||||
|
|
||||||
|
public string $key = self::KEY;
|
||||||
|
public string $name = "Logging (Console)";
|
||||||
|
public string $url = self::SHIMMIE_URL;
|
||||||
|
public array $authors = self::SHISH_AUTHOR;
|
||||||
|
public string $description = "Send log events to the command line console.";
|
||||||
|
public ExtensionVisibility $visibility = ExtensionVisibility::ADMIN;
|
||||||
|
}
|
85
ext/log_console/main.php
Normal file
85
ext/log_console/main.php
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Shimmie2;
|
||||||
|
|
||||||
|
class LogConsole extends Extension
|
||||||
|
{
|
||||||
|
public function onInitExt(InitExtEvent $event)
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
$config->set_default_bool("log_console_access", true);
|
||||||
|
$config->set_default_bool("log_console_colour", true);
|
||||||
|
$config->set_default_int("log_console_level", SCORE_LOG_INFO);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onPageRequest(PageRequestEvent $event)
|
||||||
|
{
|
||||||
|
global $config, $page;
|
||||||
|
|
||||||
|
if (
|
||||||
|
$config->get_bool("log_console_access") &&
|
||||||
|
isset($_SERVER['REQUEST_METHOD']) &&
|
||||||
|
isset($_SERVER['REQUEST_URI'])
|
||||||
|
) {
|
||||||
|
$this->log(new LogEvent(
|
||||||
|
"access",
|
||||||
|
SCORE_LOG_INFO,
|
||||||
|
"{$_SERVER['REQUEST_METHOD']} {$_SERVER['REQUEST_URI']}"
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($event->page_matches("log_test")) {
|
||||||
|
log_debug("log_console", "Hello debug!");
|
||||||
|
log_info("log_console", "Hello info!");
|
||||||
|
log_warning("log_console", "Hello warning!");
|
||||||
|
$page->set_mode(PageMode::DATA);
|
||||||
|
$page->set_data("You should see something in the log\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onLog(LogEvent $event)
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
if ($event->priority >= $config->get_int("log_console_level")) {
|
||||||
|
$this->log($event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function log(LogEvent $event)
|
||||||
|
{
|
||||||
|
global $config, $user;
|
||||||
|
// TODO: colour based on event->priority
|
||||||
|
$username = ($user && $user->name) ? $user->name : "Anonymous";
|
||||||
|
$str = join(" ", [
|
||||||
|
date(DATE_ISO8601),
|
||||||
|
get_real_ip(),
|
||||||
|
$event->section,
|
||||||
|
$username,
|
||||||
|
$event->message
|
||||||
|
]);
|
||||||
|
if ($config->get_bool("log_console_colour")) {
|
||||||
|
if ($event->priority >= SCORE_LOG_WARNING) {
|
||||||
|
// red
|
||||||
|
$COL = "\033[0;31m";
|
||||||
|
} elseif ($event->priority >= SCORE_LOG_INFO) {
|
||||||
|
// default
|
||||||
|
$COL = "";
|
||||||
|
} elseif ($event->priority >= SCORE_LOG_NOTSET) {
|
||||||
|
// blue
|
||||||
|
$COL = "\033[0;34m";
|
||||||
|
} else {
|
||||||
|
// priority < 0 ???
|
||||||
|
// magenta
|
||||||
|
$COL = "\033[0;35m";
|
||||||
|
}
|
||||||
|
$str = "$COL$str\033[0m\n";
|
||||||
|
} else {
|
||||||
|
$str = "$str\n";
|
||||||
|
}
|
||||||
|
$fp = fopen("/dev/tty", "w");
|
||||||
|
fwrite($fp, $str);
|
||||||
|
fclose($fp);
|
||||||
|
}
|
||||||
|
}
|
Reference in a new issue