From 7cf5df7e4627dc31d4c042429a82e8604fc6bf0d Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Tue, 9 Jun 2015 14:40:40 +0200 Subject: [PATCH] New console output formatting --- src/pocketmine/Thread.php | 4 +++ src/pocketmine/Worker.php | 4 +++ src/pocketmine/command/CommandReader.php | 7 +++-- src/pocketmine/network/rcon/RCONInstance.php | 4 +++ src/pocketmine/scheduler/AsyncWorker.php | 4 +++ src/pocketmine/utils/MainLogger.php | 32 ++++++++++++++------ src/pocketmine/utils/ServerKiller.php | 4 +++ 7 files changed, 46 insertions(+), 13 deletions(-) diff --git a/src/pocketmine/Thread.php b/src/pocketmine/Thread.php index a79385ad1..ce05d37b2 100644 --- a/src/pocketmine/Thread.php +++ b/src/pocketmine/Thread.php @@ -84,4 +84,8 @@ abstract class Thread extends \Thread{ ThreadManager::getInstance()->remove($this); } + + public function getThreadName(){ + return (new \ReflectionClass($this))->getShortName(); + } } \ No newline at end of file diff --git a/src/pocketmine/Worker.php b/src/pocketmine/Worker.php index 4f8603ff9..2b54171ec 100644 --- a/src/pocketmine/Worker.php +++ b/src/pocketmine/Worker.php @@ -85,4 +85,8 @@ abstract class Worker extends \Worker{ ThreadManager::getInstance()->remove($this); } + + public function getThreadName(){ + return (new \ReflectionClass($this))->getShortName(); + } } \ No newline at end of file diff --git a/src/pocketmine/command/CommandReader.php b/src/pocketmine/command/CommandReader.php index 02a6dddc2..15287692e 100644 --- a/src/pocketmine/command/CommandReader.php +++ b/src/pocketmine/command/CommandReader.php @@ -29,9 +29,6 @@ class CommandReader extends Thread{ /** @var \Threaded */ protected $buffer; - /** - * @param \Threaded $threaded - */ public function __construct(){ $this->buffer = \ThreadedFactory::create(); $this->start(); @@ -82,4 +79,8 @@ class CommandReader extends Thread{ $lastLine = microtime(true); } } + + public function getThreadName(){ + return "Console"; + } } diff --git a/src/pocketmine/network/rcon/RCONInstance.php b/src/pocketmine/network/rcon/RCONInstance.php index 77268989a..92d289647 100644 --- a/src/pocketmine/network/rcon/RCONInstance.php +++ b/src/pocketmine/network/rcon/RCONInstance.php @@ -178,4 +178,8 @@ class RCONInstance extends Thread{ unset($this->socket, $this->cmd, $this->response, $this->stop); exit(0); } + + public function getThreadName(){ + return "RCON"; + } } \ No newline at end of file diff --git a/src/pocketmine/scheduler/AsyncWorker.php b/src/pocketmine/scheduler/AsyncWorker.php index 79ab59915..3d1825c56 100644 --- a/src/pocketmine/scheduler/AsyncWorker.php +++ b/src/pocketmine/scheduler/AsyncWorker.php @@ -38,4 +38,8 @@ class AsyncWorker extends Worker{ public function start($options = PTHREADS_INHERIT_NONE){ parent::start(PTHREADS_INHERIT_CONSTANTS | PTHREADS_INHERIT_FUNCTIONS); } + + public function getThreadName(){ + return "Asynchronous Worker"; + } } diff --git a/src/pocketmine/utils/MainLogger.php b/src/pocketmine/utils/MainLogger.php index 1e3865e95..94929f941 100644 --- a/src/pocketmine/utils/MainLogger.php +++ b/src/pocketmine/utils/MainLogger.php @@ -22,6 +22,8 @@ namespace pocketmine\utils; use LogLevel; +use pocketmine\Thread; +use pocketmine\Worker; class MainLogger extends \AttachableThreadedLogger{ protected $logFile; @@ -58,38 +60,38 @@ class MainLogger extends \AttachableThreadedLogger{ } public function emergency($message){ - $this->send(TextFormat::RED . "[EMERGENCY] " . $message, \LogLevel::EMERGENCY); + $this->send($message, \LogLevel::EMERGENCY, "EMERGENCY", TextFormat::RED); } public function alert($message){ - $this->send(TextFormat::RED . "[ALERT] " . $message, \LogLevel::ALERT); + $this->send($message, \LogLevel::ALERT, "ALERT", TextFormat::RED); } public function critical($message){ - $this->send(TextFormat::RED . "[CRITICAL] " . $message, \LogLevel::CRITICAL); + $this->send($message, \LogLevel::CRITICAL, "CRITICAL", TextFormat::RED); } public function error($message){ - $this->send(TextFormat::DARK_RED . "[ERROR] " . $message, \LogLevel::ERROR); + $this->send($message, \LogLevel::ERROR, "ERROR", TextFormat::DARK_RED); } public function warning($message){ - $this->send(TextFormat::YELLOW . "[WARNING] " . $message, \LogLevel::WARNING); + $this->send($message, \LogLevel::WARNING, "WARNING", TextFormat::YELLOW); } public function notice($message){ - $this->send(TextFormat::AQUA . "[NOTICE] " . $message, \LogLevel::NOTICE); + $this->send($message, \LogLevel::NOTICE, "NOTICE", TextFormat::AQUA); } public function info($message){ - $this->send(TextFormat::WHITE . "[INFO] " . $message, \LogLevel::INFO); + $this->send($message, \LogLevel::INFO, "INFO", TextFormat::WHITE); } public function debug($message){ if($this->logDebug === false){ return; } - $this->send(TextFormat::GRAY . "[DEBUG] " . $message, \LogLevel::DEBUG); + $this->send($message, \LogLevel::DEBUG, "DEBUG", TextFormat::GRAY); } /** @@ -175,9 +177,19 @@ class MainLogger extends \AttachableThreadedLogger{ $this->shutdown = true; } - protected function send($message, $level = -1){ + protected function send($message, $level, $prefix, $color){ $now = time(); - $message = TextFormat::toANSI(TextFormat::AQUA . date("H:i:s", $now) . TextFormat::RESET . " " . $message . TextFormat::RESET); + + $thread = \Thread::getCurrentThread(); + if($thread === null){ + $threadName = "Server thread"; + }elseif($thread instanceof Thread or $thread instanceof Worker){ + $threadName = $thread->getThreadName() . " thread"; + }else{ + $threadName = (new \ReflectionClass($thread))->getShortName() . " thread"; + } + + $message = TextFormat::toANSI(TextFormat::AQUA . "[" . date("H:i:s", $now) . "] ". TextFormat::RESET . $color ."[" . $threadName . "/" . $prefix . "]:" . " " . $message . TextFormat::RESET); $cleanMessage = TextFormat::clean($message); if(!Terminal::hasFormattingCodes()){ diff --git a/src/pocketmine/utils/ServerKiller.php b/src/pocketmine/utils/ServerKiller.php index e3b4d5d47..cc2a8babb 100644 --- a/src/pocketmine/utils/ServerKiller.php +++ b/src/pocketmine/utils/ServerKiller.php @@ -30,4 +30,8 @@ class ServerKiller extends Thread{ echo "\nTook to long to stop, server was killed forcefully!\n"; @\pocketmine\kill(getmypid()); } + + public function getThreadName(){ + return "Server Killer"; + } } \ No newline at end of file