优化apps/jingrow/jingrow/__init__.py
This commit is contained in:
parent
9f73ff1eb3
commit
7ad5b29276
@ -26,44 +26,6 @@ for _lvl in list(_ANSI.keys()):
|
|||||||
_code = _ANSI[_lvl]
|
_code = _ANSI[_lvl]
|
||||||
logging.addLevelName(getattr(logging, _lvl), f"{_code}{_lvl}\x1b[0m")
|
logging.addLevelName(getattr(logging, _lvl), f"{_code}{_lvl}\x1b[0m")
|
||||||
|
|
||||||
def _ensure_logging_configured() -> None:
|
|
||||||
|
|
||||||
# 统一在 root logger 上配置输出与格式,这样通过名为 "jingrow" 的 logger 打印时,
|
|
||||||
# 也会以 "jingrow - ERROR - ... - 时间" 的格式输出,并带颜色的级别名。
|
|
||||||
root_logger = logging.getLogger()
|
|
||||||
if not root_logger.handlers:
|
|
||||||
handler = logging.StreamHandler()
|
|
||||||
# 统一样式:不含 logger 名称,只输出级别、消息、时间
|
|
||||||
formatter = logging.Formatter("%(levelname)s - %(message)s - %(asctime)s")
|
|
||||||
handler.setFormatter(formatter)
|
|
||||||
root_logger.addHandler(handler)
|
|
||||||
try:
|
|
||||||
level_name = str(getattr(Config, 'log_level', 'INFO')).upper()
|
|
||||||
except Exception:
|
|
||||||
level_name = 'INFO'
|
|
||||||
try:
|
|
||||||
level = getattr(logging, level_name, logging.INFO)
|
|
||||||
except Exception:
|
|
||||||
level = logging.INFO
|
|
||||||
root_logger.setLevel(level)
|
|
||||||
|
|
||||||
# 如果已存在其他 handler,但需要强制向控制台输出(例如运行在 API 模式),
|
|
||||||
# 则在设置了环境变量 JINGROW_STREAM_LOGGING 的情况下,补充一个 StreamHandler。
|
|
||||||
try:
|
|
||||||
force_stream = os.environ.get("JINGROW_STREAM_LOGGING")
|
|
||||||
except Exception:
|
|
||||||
force_stream = None
|
|
||||||
if force_stream and not any(isinstance(h, logging.StreamHandler) for h in root_logger.handlers):
|
|
||||||
_sh = logging.StreamHandler()
|
|
||||||
_sh.setFormatter(logging.Formatter("%(levelname)s - %(message)s - %(asctime)s"))
|
|
||||||
root_logger.addHandler(_sh)
|
|
||||||
|
|
||||||
# 使用 root 的处理器,避免 jingrow 自带 handler 导致重复输出
|
|
||||||
if _root_logger.handlers:
|
|
||||||
_root_logger.handlers.clear()
|
|
||||||
_root_logger.propagate = True
|
|
||||||
# 与 root 保持同级别,避免级别不一致导致丢日志
|
|
||||||
_root_logger.setLevel(root_logger.level)
|
|
||||||
|
|
||||||
# ====== High-level helpers to enforce Page lifecycle (hooks) ======
|
# ====== High-level helpers to enforce Page lifecycle (hooks) ======
|
||||||
|
|
||||||
@ -144,6 +106,44 @@ def get_meta(pagetype: str):
|
|||||||
"""获取 pagetype 的元数据,返回后端适配器的原始结果结构。"""
|
"""获取 pagetype 的元数据,返回后端适配器的原始结果结构。"""
|
||||||
return Page(pagetype).get_meta()
|
return Page(pagetype).get_meta()
|
||||||
|
|
||||||
|
def _ensure_logging_configured() -> None:
|
||||||
|
|
||||||
|
# 统一在 root logger 上配置输出与格式,这样通过名为 "jingrow" 的 logger 打印时,
|
||||||
|
# 也会以 "jingrow - ERROR - ... - 时间" 的格式输出,并带颜色的级别名。
|
||||||
|
root_logger = logging.getLogger()
|
||||||
|
if not root_logger.handlers:
|
||||||
|
handler = logging.StreamHandler()
|
||||||
|
# 统一样式:不含 logger 名称,只输出级别、消息、时间
|
||||||
|
formatter = logging.Formatter("%(levelname)s - %(message)s - %(asctime)s")
|
||||||
|
handler.setFormatter(formatter)
|
||||||
|
root_logger.addHandler(handler)
|
||||||
|
try:
|
||||||
|
level_name = str(getattr(Config, 'log_level', 'INFO')).upper()
|
||||||
|
except Exception:
|
||||||
|
level_name = 'INFO'
|
||||||
|
try:
|
||||||
|
level = getattr(logging, level_name, logging.INFO)
|
||||||
|
except Exception:
|
||||||
|
level = logging.INFO
|
||||||
|
root_logger.setLevel(level)
|
||||||
|
|
||||||
|
# 如果已存在其他 handler,但需要强制向控制台输出(例如运行在 API 模式),
|
||||||
|
# 则在设置了环境变量 JINGROW_STREAM_LOGGING 的情况下,补充一个 StreamHandler。
|
||||||
|
try:
|
||||||
|
force_stream = os.environ.get("JINGROW_STREAM_LOGGING")
|
||||||
|
except Exception:
|
||||||
|
force_stream = None
|
||||||
|
if force_stream and not any(isinstance(h, logging.StreamHandler) for h in root_logger.handlers):
|
||||||
|
_sh = logging.StreamHandler()
|
||||||
|
_sh.setFormatter(logging.Formatter("%(levelname)s - %(message)s - %(asctime)s"))
|
||||||
|
root_logger.addHandler(_sh)
|
||||||
|
|
||||||
|
# 使用 root 的处理器,避免 jingrow 自带 handler 导致重复输出
|
||||||
|
if _root_logger.handlers:
|
||||||
|
_root_logger.handlers.clear()
|
||||||
|
_root_logger.propagate = True
|
||||||
|
# 与 root 保持同级别,避免级别不一致导致丢日志
|
||||||
|
_root_logger.setLevel(root_logger.level)
|
||||||
|
|
||||||
def log_error(title: Optional[str] = None, message: Optional[str] = None, *, exc: Optional[BaseException] = None) -> None:
|
def log_error(title: Optional[str] = None, message: Optional[str] = None, *, exc: Optional[BaseException] = None) -> None:
|
||||||
"""输出错误日志到终端。
|
"""输出错误日志到终端。
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user