cleanup framework class logging

This commit is contained in:
sunxyw
2022-05-22 22:18:04 +08:00
parent 09780f64de
commit c106c4fc2a
2 changed files with 23 additions and 42 deletions

View File

@@ -9,7 +9,6 @@ use Error;
use Exception;
use InvalidArgumentException;
use Phar;
use Psr\Log\LoggerInterface;
use ReflectionClass;
use ReflectionException;
use Swoole\Runtime;
@@ -20,7 +19,6 @@ use ZM\Annotation\Swoole\SwooleHandler;
use ZM\Config\ZMConfig;
use ZM\ConnectionManager\ManagerGM;
use ZM\Console\Console;
use ZM\Container\WorkerContainer;
use ZM\Exception\ConfigException;
use ZM\Logger\TablePrinter;
use ZM\Store\LightCache;
@@ -121,7 +119,7 @@ class Framework
],
]);
} catch (ConnectionManager\TableException $e) {
echo zm_internal_errcode('E00008') . $e->getMessage() . PHP_EOL;
logger()->emergency(zm_internal_errcode('E00008') . $e->getMessage());
exit(1);
}
@@ -138,9 +136,6 @@ class Framework
Console::setOutputFile(ZMConfig::get('global', 'runtime')['save_console_log_file']);
}
// TODO: remove tmp statement
WorkerContainer::getInstance()->singleton(LoggerInterface::class, ZMConfig::get('logging.logger'));
// 设置默认时区
$timezone = ZMConfig::get('global', 'timezone') ?? 'Asia/Shanghai';
date_default_timezone_set($timezone);
@@ -305,37 +300,20 @@ class Framework
// 注册全局错误处理器
set_error_handler(static function ($error_no, $error_msg, $error_file, $error_line) {
switch ($error_no) {
case E_WARNING:
$level_tips = 'PHP Warning: ';
break;
case E_NOTICE:
$level_tips = 'PHP Notice: ';
break;
case E_DEPRECATED:
$level_tips = 'PHP Deprecated: ';
break;
case E_USER_ERROR:
$level_tips = 'User Error: ';
break;
case E_USER_WARNING:
$level_tips = 'User Warning: ';
break;
case E_USER_NOTICE:
$level_tips = 'User Notice: ';
break;
case E_USER_DEPRECATED:
$level_tips = 'User Deprecated: ';
break;
case E_STRICT:
$level_tips = 'PHP Strict: ';
break;
default:
$level_tips = 'Unkonw Type Error: ';
break;
}
$error = $level_tips . $error_msg . ' in ' . $error_file . ' on ' . $error_line;
Console::warning($error);
$tips = [
E_WARNING => ['PHP Warning: ', 'warning'],
E_NOTICE => ['PHP Notice: ', 'notice'],
E_USER_ERROR => ['PHP Error: ', 'error'],
E_USER_WARNING => ['PHP Warning: ', 'warning'],
E_USER_NOTICE => ['PHP Notice: ', 'notice'],
E_STRICT => ['PHP Strict: ', 'notice'],
E_RECOVERABLE_ERROR => ['PHP Recoverable Error: ', 'error'],
E_DEPRECATED => ['PHP Deprecated: ', 'notice'],
E_USER_DEPRECATED => ['PHP User Deprecated: ', 'notice'],
];
$level_tip = $tips[$error_no] ?? ['PHP Unknown: ', 'error'];
$error = $level_tip[0] . $error_msg . ' in ' . $error_file . ' on ' . $error_line;
logger()->{$level_tip}[1]($error);
// 如果 return false 则错误会继续递交给 PHP 标准错误处理
return true;
}, E_ALL | E_STRICT);
@@ -377,10 +355,10 @@ class Framework
self::$server->start();
zm_atomic('server_is_stopped')->set(1);
if (!self::$argv['private-mode']) {
Console::log('zhamao-framework is stopped.');
logger()->info('炸毛框架已停止!');
}
} catch (Throwable $e) {
exit(zm_internal_errcode('E00011') . 'Framework has an uncaught ' . get_class($e) . ': ' . $e->getMessage() . PHP_EOL);
exit(zm_internal_errcode('E00011') . '框架发生未捕获的异常:' . get_class($e) . ': ' . $e->getMessage() . PHP_EOL);
}
}
@@ -443,12 +421,12 @@ class Framework
$r = exec(PHP_BINARY . ' ' . DataProvider::getFrameworkRootDir() . '/src/ZM/script_setup_loader.php', $output, $result_code);
}
if ($result_code !== 0) {
Console::error('Parsing code error!');
logger()->emergency('代码解析错误!');
exit(1);
}
$json = json_decode($r, true);
if (!is_array($json)) {
Console::warning(zm_internal_errcode('E00012') . 'Parsing @SwooleHandler and @OnSetup error!');
logger()->error(zm_internal_errcode('E00012') . '解析 @SwooleHandler @OnSetup 时发生错误,请检查代码!');
}
$this->setup_events = $json;
}
@@ -477,7 +455,7 @@ class Framework
}
foreach (($this->setup_events['setup'] ?? []) as $v) {
Console::debug('Calling @OnSetup: ' . $v['class']);
logger()->debug('Calling @OnSetup: ' . $v['class']);
$c = ZMUtil::getModInstance($v['class']);
$method = $v['method'];
$c->{$method}();

View File

@@ -790,5 +790,8 @@ function is_assoc_array(array $array): bool
*/
function logger(): LoggerInterface
{
if (!app()->has(LoggerInterface::class)) {
return zm_config('logging.logger')();
}
return resolve(LoggerInterface::class);
}