Some simple information syncing

This commit is contained in:
2026-07-28 21:08:58 +08:00
parent 1837339f69
commit 3633be1995
65 changed files with 1132 additions and 368581 deletions

View File

@@ -54,11 +54,12 @@ BACKGROUND_INTENSITY: t.CDefine = 0x0080
BACKGROUND_WHITE: t.CDefine = BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE
@t.NoVTable
class Logger:
_level: int
_console_handle: w32base.HANDLE
_console_handle: win32base.HANDLE
_use_color: int
__mbuddy__: memhub.MemManager | t.CPtr
__mbuddy__: memhub.MemBuddy | t.CPtr
def __init__(self, level: int = 1):
self._level = level
@@ -67,8 +68,11 @@ class Logger:
self.__mbuddy__ = _mbuddy
def _set_color(self, attr: WORD) -> int:
if self._use_color:
return w32cmd.SetConsoleTextAttribute(self._console_handle, attr)
uc: int = self._use_color
if uc:
ch: win32base.HANDLE = self._console_handle
ret: int = w32cmd.SetConsoleTextAttribute(ch, attr)
return ret
return 0
def _reset_color(self) -> int:
@@ -88,23 +92,17 @@ class Logger:
def _log(self, level: int, prefix_sym: str, level_str: str, msg: str,
sym_color: WORD, level_color: WORD,
category: str = "") -> int:
if level < self._level:
return 0
# 前缀符号(如 ├)
# 前缀符号着色
self._set_color(sym_color)
stdio.printf("%s ", prefix_sym)
# LEVEL 标签(亮色)
# LEVEL 标签着色
self._set_color(level_color)
if category is not None:
if category[0] != 0:
stdio.printf("%s[%s]: ", level_str, category)
else:
stdio.printf("%s: ", level_str)
else:
stdio.printf("%s: ", level_str)
# 消息内容(默认色)
stdio.printf("%s", level_str)
self._reset_color()
stdio.printf("%s\n", msg)
# category 可选
if category is not None and category[0] != 0:
stdio.printf("[%s]", category)
stdio.printf(": %s\n", msg)
return 0
def debug(self, msg: str, category: str = "") -> int:
@@ -112,9 +110,10 @@ class Logger:
FOREGROUND_INTENSITY, FOREGROUND_INTENSITY, category)
def info(self, msg: str, category: str = "") -> int:
return self._log(LogLevel.INFO, "", "INFO", msg,
FOREGROUND_GREEN,
FOREGROUND_GREEN | FOREGROUND_INTENSITY, category)
ret: int = self._log(LogLevel.INFO, "", "INFO", msg,
FOREGROUND_GREEN,
FOREGROUND_GREEN | FOREGROUND_INTENSITY, category)
return ret
def warning(self, msg: str, category: str = "") -> int:
return self._log(LogLevel.WARNING, "", "WARN", msg,
@@ -189,7 +188,7 @@ class Logger:
# 全局 mbuddy 指针(由 lib.InitLib 注入)
_mbuddy: memhub.MemManager | t.CPtr
_mbuddy: memhub.MemBuddy | t.CPtr
# 全局 logger 指针
_g_logger: Logger | t.CPtr
@@ -223,10 +222,8 @@ def get_logger() -> Logger | t.CPtr:
if raw is None:
return None
_g_logger = raw
_g_logger._level = LogLevel.INFO
_g_logger._console_handle = w32file.GetStdHandle(w32file.STD_OUTPUT_HANDLE)
_g_logger._use_color = 1
_g_logger.__mbuddy__ = _mbuddy
_g_logger.__before_init__()
_g_logger.__init__(LogLevel.INFO)
return _g_logger