封装log_error用于统一输出日志
This commit is contained in:
parent
8233b2e69e
commit
9c0be24592
@ -5,12 +5,36 @@ from typing import Dict, List, Any, Optional, Union
|
||||
import functools
|
||||
import inspect
|
||||
import logging
|
||||
import os
|
||||
from jingrow.model.page import Page
|
||||
from jingrow.config import Config
|
||||
|
||||
_adapter = None
|
||||
_local = {}
|
||||
|
||||
# 统一 Jingrow 日志记录器(仅为本模块及调用方提供最小可用输出,不修改全局 root logger)
|
||||
_root_logger = logging.getLogger("jingrow")
|
||||
|
||||
def _ensure_logging_configured() -> None:
|
||||
|
||||
if not _root_logger.handlers:
|
||||
handler = logging.StreamHandler()
|
||||
formatter = logging.Formatter(
|
||||
fmt="%(asctime)s %(levelname)s %(name)s - %(message)s"
|
||||
)
|
||||
handler.setFormatter(formatter)
|
||||
_root_logger.addHandler(handler)
|
||||
# 从配置文件(Config)读取日志级别(默认 INFO)
|
||||
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)
|
||||
|
||||
def _init_adapter(run_mode: str = "api"):
|
||||
global _adapter
|
||||
|
||||
@ -50,8 +74,21 @@ def db_get_value(pagetype: str, filters: Dict[str, Any] = None, fieldname: str =
|
||||
def db_set_value(pagetype: str, filters: Dict[str, Any] = None, fieldname: str = None, value: Any = None):
|
||||
return _adapter.db_set_value(pagetype, filters, fieldname, value)
|
||||
|
||||
def log_error(title: str, message: str):
|
||||
return _adapter.log_error(title, message)
|
||||
def log_error(title: Optional[str] = None, message: Optional[str] = None, *, exc: Optional[BaseException] = None) -> None:
|
||||
"""输出错误日志到终端。
|
||||
|
||||
调用约定:
|
||||
- log_error(content) -> 仅内容
|
||||
- log_error(title, content) -> 标题 + 内容
|
||||
- 可选 exc=Exception(...) 传入异常以带上堆栈
|
||||
"""
|
||||
_ensure_logging_configured()
|
||||
# 兼容仅传内容或传标题+内容两种形式
|
||||
if message is None:
|
||||
content = "" if title is None else str(title)
|
||||
else:
|
||||
content = str(message) if title is None else f"{title} - {message}"
|
||||
_root_logger.error(content, exc_info=exc)
|
||||
|
||||
def throw(title: str, message: str):
|
||||
return _adapter.throw(title, message)
|
||||
|
||||
@ -35,6 +35,8 @@ class Settings(BaseSettings):
|
||||
run_mode: str = 'api'
|
||||
# 环境:development/production(控制启动模式、热重载等)
|
||||
environment: str = 'development'
|
||||
# 日志级别:DEBUG/INFO/WARNING/ERROR/CRITICAL(全局默认级别)
|
||||
log_level: str = 'INFO'
|
||||
|
||||
# 本地后端主机配置
|
||||
backend_host: str = '0.0.0.0'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user