Skip to content

Commit 9950ad1

Browse files
committed
logger: add log level, remove NOTICE
1 parent ac70008 commit 9950ad1

File tree

6 files changed

+59
-85
lines changed

6 files changed

+59
-85
lines changed

src/iTXTech/SimpleFramework/Console/Logger.php

Lines changed: 34 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,27 @@
1818

1919
use iTXTech\SimpleFramework\Util\Util;
2020

21-
class Logger{
22-
const EMERGENCY = "emergency";
23-
const ALERT = "alert";
24-
const CRITICAL = "critical";
25-
const ERROR = "error";
26-
const WARNING = "warning";
27-
const NOTICE = "notice";
28-
const INFO = "info";
29-
const DEBUG = "debug";
30-
21+
abstract class Logger extends LoggerHandler{
22+
public const ERROR = 3;
23+
public const WARNING = 2;
24+
public const INFO = 1;
25+
public const DEBUG = 0;
26+
27+
private const PREFIX = [
28+
self::DEBUG => "DEBUG",
29+
self::INFO => "INFO",
30+
self::WARNING => "WARNING",
31+
self::ERROR => "ERROR"
32+
];
33+
34+
public static $logLevel = self::INFO;
3135
public static $hasPrefix = true;
3236
public static $disableOutput = false;
3337
public static $disableClass = false;
3438

3539
private static $logfile = "";
3640
/** @var LoggerHandler */
37-
private static $loggerHandler = "";
41+
private static $loggerHandler = Logger::class;
3842

3943
public static function setLoggerHandler(string $class) : bool{
4044
if(is_a($class, LoggerHandler::class, true)){
@@ -51,36 +55,20 @@ public static function setLogFile(string $logfile){
5155
self::$logfile = $logfile;
5256
}
5357

54-
public static function emergency($message, $name = "EMERGENCY"){
55-
self::send($message, $name, TextFormat::RED);
56-
}
57-
58-
public static function alert($message, $name = "ALERT"){
59-
self::send($message, $name, TextFormat::RED);
60-
}
61-
62-
public static function critical($message, $name = "CRITICAL"){
63-
self::send($message, $name, TextFormat::RED);
64-
}
65-
66-
public static function error($message, $name = "ERROR"){
67-
self::send($message, $name, TextFormat::DARK_RED);
68-
}
69-
70-
public static function warning($message, $name = "WARNING"){
71-
self::send($message, $name, TextFormat::YELLOW);
58+
public static function error(string $message){
59+
self::send($message, self::ERROR, TextFormat::DARK_RED);
7260
}
7361

74-
public static function notice($message, $name = "NOTICE"){
75-
self::send($message, $name, TextFormat::AQUA);
62+
public static function warning(string $message){
63+
self::send($message, self::WARNING, TextFormat::YELLOW);
7664
}
7765

78-
public static function info($message, $name = "INFO"){
79-
self::send($message, $name, TextFormat::WHITE);
66+
public static function info(string $message){
67+
self::send($message, self::INFO, TextFormat::WHITE);
8068
}
8169

82-
public static function debug($message, $name = "DEBUG"){
83-
self::send($message, $name, TextFormat::GRAY);
70+
public static function debug(string $message){
71+
self::send($message, self::DEBUG, TextFormat::GRAY);
8472
}
8573

8674
public static function logException(\Throwable $e){
@@ -109,9 +97,9 @@ public static function logException(\Throwable $e){
10997
E_USER_DEPRECATED => "E_USER_DEPRECATED",
11098
];
11199
if($errno === 0){
112-
$type = self::CRITICAL;
100+
$type = self::ERROR;
113101
}else{
114-
$type = ($errno === E_ERROR or $errno === E_USER_ERROR) ? self::ERROR : (($errno === E_USER_WARNING or $errno === E_WARNING) ? self::WARNING : self::NOTICE);
102+
$type = ($errno === E_ERROR or $errno === E_USER_ERROR) ? self::ERROR : self::WARNING;
115103
}
116104
$errno = isset($errorConversion[$errno]) ? $errorConversion[$errno] : $errno;
117105
if(($pos = strpos($errstr, "\n")) !== false){
@@ -125,24 +113,12 @@ public static function logException(\Throwable $e){
125113

126114
public static function log($level, $message){
127115
switch($level){
128-
case self::EMERGENCY:
129-
self::emergency($message);
130-
break;
131-
case self::ALERT:
132-
self::alert($message);
133-
break;
134-
case self::CRITICAL:
135-
self::critical($message);
136-
break;
137116
case self::ERROR:
138117
self::error($message);
139118
break;
140119
case self::WARNING:
141120
self::warning($message);
142121
break;
143-
case self::NOTICE:
144-
self::notice($message);
145-
break;
146122
case self::INFO:
147123
self::info($message);
148124
break;
@@ -152,12 +128,11 @@ public static function log($level, $message){
152128
}
153129
}
154130

155-
public static function send(string $message, string $prefix, string $color){
131+
public static function send(string $message, int $level, string $color){
156132
if(self::$disableOutput){
157133
return;
158134
}
159-
if(self::$loggerHandler !== ""){
160-
self::$loggerHandler::send($message, $prefix, $color);
135+
if($level < self::$logLevel){
161136
return;
162137
}
163138
if(self::$hasPrefix){
@@ -171,10 +146,16 @@ public static function send(string $message, string $prefix, string $color){
171146
$class = $class == "" ? "Console" : $class;
172147
}
173148
$message = TextFormat::toANSI(TextFormat::AQUA . "[" . date("G:i:s", $now) . "] " .
174-
TextFormat::RESET . $color . "<" . $class . "/" . $prefix . ">" . " " . $message . TextFormat::RESET);
149+
TextFormat::RESET . $color . "<" . $class . "/" . self::PREFIX[$level] . ">" . " " .
150+
$message . TextFormat::RESET);
175151
}else{
176152
$message = TextFormat::toANSI($message . TextFormat::RESET);
177153
}
154+
155+
self::$loggerHandler::println($message);
156+
}
157+
158+
public static function println(string $message){
178159
$cleanMessage = TextFormat::clean($message);
179160

180161
if(!Terminal::hasFormattingCodes()){

src/iTXTech/SimpleFramework/Console/LoggerHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@
1717
namespace iTXTech\SimpleFramework\Console;
1818

1919
abstract class LoggerHandler{
20-
public static abstract function send(string $message, string $prefix, string $color);
20+
public static abstract function println(string $message);
2121
}

src/iTXTech/SimpleFramework/Console/SwooleLoggerHandler.php

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,7 @@ public static function init(){
5151
self::$proc->start();
5252
}
5353

54-
public static function send(string $message, string $prefix, string $color){
55-
$now = time();
56-
$class = @end(explode('\\', debug_backtrace()[2]['class']));
57-
if(strlen($class) > 20){
58-
$class = substr($class, 0, 20);
59-
}
60-
$class = $class == "" ? "Console" : $class;
61-
$message = TextFormat::toANSI(TextFormat::AQUA . "[" . date("G:i:s", $now) . "] " .
62-
TextFormat::RESET . $color . $class . "/" . $prefix . ">" . " " . $message . TextFormat::RESET);
63-
54+
public static function println(string $message){
6455
$cleanMessage = TextFormat::clean($message);
6556

6657
if(!Terminal::hasFormattingCodes()){

src/iTXTech/SimpleFramework/Framework.php

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -142,18 +142,19 @@ private function registerDefaultOptions(){
142142
$this->options->addOption((new OptionBuilder("v"))->longOpt("version")
143143
->desc("Display version of SimpleFramework")->build());
144144

145-
$this->options->addOption((new OptionBuilder("d"))->longOpt("disable-logger")
145+
$this->options->addOption((new OptionBuilder("a"))->longOpt("ansi")
146+
->desc("Enable or disable ANSI")->hasArg()->argName("yes|no")->build());
147+
$this->options->addOption((new OptionBuilder("b"))->longOpt("config")
148+
->desc("Overwrite specified config property")->hasArg()->argName("prop")->build());
149+
//c, d
150+
151+
$this->options->addOption((new OptionBuilder("e"))->longOpt("disable-logger")
146152
->desc("Disable Logger output")->build());
147-
$this->options->addOption((new OptionBuilder("c"))->longOpt("disable-logger-class")
153+
$this->options->addOption((new OptionBuilder("f"))->longOpt("disable-logger-class")
148154
->desc("Disable Logger Class detection")->build());
149-
$this->options->addOption((new OptionBuilder("p"))->longOpt("without-prefix")
155+
$this->options->addOption((new OptionBuilder("g"))->longOpt("without-prefix")
150156
->desc("Do not print prefix when printing log")->build());
151-
$this->options->addOption((new OptionBuilder("a"))->longOpt("ansi")
152-
->desc("Enable or Disable ANSI")->hasArg()->argName("yes|no")->build());
153-
$this->options->addOption((new OptionBuilder("t"))->longOpt("title")
154-
->desc("Enable or Disable title display")->hasArg()->argName("yes|no")->build());
155-
$this->options->addOption((new OptionBuilder("e"))->longOpt("config")
156-
->desc("Overwrite specified config property")->hasArg()->argName("prop")->build());
157+
//i, j, k
157158

158159
$this->options->addOption((new OptionBuilder("l"))->longOpt("data-path")
159160
->desc("Specify SimpleFramework data path")->hasArg()->argName("path")->build());
@@ -163,11 +164,13 @@ private function registerDefaultOptions(){
163164
->desc("Specify SimpleFramework module data path")->hasArg()->argName("path")->build());
164165
$this->options->addOption((new OptionBuilder("o"))->longOpt("config-path")
165166
->desc("Specify SimpleFramework config file")->hasArg()->argName("path")->build());
167+
//p, q
166168

167-
$this->options->addOption((new OptionBuilder("l"))->longOpt("load-module")->hasArg()
169+
$this->options->addOption((new OptionBuilder("r"))->longOpt("load-module")->hasArg()
168170
->desc("Load the specified module")->argName("path")->build());
169-
$this->options->addOption((new OptionBuilder("r"))->longOpt("run-command")->hasArg()
171+
$this->options->addOption((new OptionBuilder("s"))->longOpt("run-command")->hasArg()
170172
->desc("Execute the specified command")->argName("command")->build());
173+
//t, u, w, x, y, z
171174
}
172175

173176
private function processCommandLineOptions(array $argv){
@@ -201,9 +204,6 @@ private function processCommandLineOptions(array $argv){
201204
Terminal::$formattingCodes = Util::getCliOptBool($cmd->getOptionValue("ansi"));
202205
Terminal::init();
203206
}
204-
if($cmd->hasOption("title")){
205-
$this->properties->config["display-title"] = false;
206-
}
207207
if($cmd->hasOption("load-module")){
208208
foreach($cmd->getOptionValues("load-module") as $value){
209209
$this->properties->additionalModules[] = $value;
@@ -237,7 +237,7 @@ private function processCommandLineOptions(array $argv){
237237
}
238238
}catch(\Throwable $e){
239239
Util::println($e->getMessage());
240-
$t = (new HelpFormatter())->generateHelp("sf", $this->options, true);
240+
$t = (new HelpFormatter())->generateHelp("sf", $this->options);
241241
echo $t;
242242
exit(1);
243243
}
@@ -254,6 +254,7 @@ public function start(bool $useMainThreadTick = true, array $argv = []){
254254
"auto-load-modules" => true,
255255
"async-workers" => 2,
256256
"log-file" => "",
257+
"log-level" => 1,
257258
"display-title" => true,
258259
"wsmdr" => [//WraithSpireModuleDependencyResolver
259260
"enabled" => true,
@@ -265,6 +266,7 @@ public function start(bool $useMainThreadTick = true, array $argv = []){
265266
$this->properties->mergeConfig($this->config);
266267

267268
Logger::setLogFile($this->config->get("log-file", ""));
269+
Logger::$logLevel = $this->config->get("log-level", 1);
268270

269271
Logger::info(TextFormat::AQUA . self::PROG_NAME . " " . TextFormat::LIGHT_PURPLE .
270272
self::PROG_VERSION . TextFormat::GREEN . " [" . self::CODENAME . "]");
@@ -304,7 +306,7 @@ public function start(bool $useMainThreadTick = true, array $argv = []){
304306
$mdr->init();
305307
}
306308

307-
Logger::notice("Done! Type 'help' for help.");
309+
Logger::info("Done! Type 'help' for help.");
308310

309311
$this->properties->runCommands($this->commandProcessor);
310312

@@ -349,7 +351,7 @@ public function update(){
349351
}
350352

351353
public function stop(){
352-
Logger::notice("Stopping SimpleFramework...");
354+
Logger::info("Stopping SimpleFramework...");
353355
foreach($this->moduleManager->getModules() as $module){
354356
if($module->isLoaded()){
355357
$this->moduleManager->unloadModule($module);

src/iTXTech/SimpleFramework/Module/ModuleManager.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public function getModule(string $moduleName){
6969

7070
public function loadModule(Module $module){
7171
if($module->isLoaded()){
72-
Logger::notice("Module " . $module->getInfo()->getName() . " is already loaded");
72+
Logger::info("Module " . $module->getInfo()->getName() . " is already loaded");
7373
}else{
7474
Logger::info("Loading module " . $module->getInfo()->getName() . " v" . $module->getInfo()->getVersion());
7575
if($module->preLoad()){
@@ -87,7 +87,7 @@ public function unloadModule(Module $module){
8787
$module->unload();
8888
$module->setLoaded(false);
8989
}else{
90-
Logger::notice("Module " . $module->getInfo()->getName() . " is not loaded.");
90+
Logger::info("Module " . $module->getInfo()->getName() . " is not loaded.");
9191
}
9292
}
9393

src/iTXTech/SimpleFramework/SimpleFramework.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@
4444
}
4545
if(!extension_loaded("pthreads")){
4646
@define('iTXTech\SimpleFramework\SINGLE_THREAD', true);
47-
Logger::notice("Unable to find the pthreads extension.");
48-
Logger::notice("SimpleFramework will run in single thread mode.");
47+
Logger::debug("Unable to find the pthreads extension.");
48+
Logger::debug("SimpleFramework will run in single thread mode.");
4949
}else{
5050
@define('iTXTech\SimpleFramework\SINGLE_THREAD', false);
5151
}

0 commit comments

Comments
 (0)