diff --git a/docs/change_logs/0-4.md b/docs/change_logs/0-4.md index 29053cc..96b4866 100644 --- a/docs/change_logs/0-4.md +++ b/docs/change_logs/0-4.md @@ -8,6 +8,9 @@ - 现在如果输入的文件名包含 `{time}` - 会自动替换为 `time.strftime("%Y-%m-%d_%H-%M-%S")` - 修复了一些之前没有发现的问题 +- `config` + - 添加了 `get_logger_from_old` + - 用于从现有 logger 中获取一个新的 logger ## Nuitka Compiler Helper diff --git a/src/lib_not_dr/loggers/__init__.py b/src/lib_not_dr/loggers/__init__.py index 08f0595..2ce3af2 100644 --- a/src/lib_not_dr/loggers/__init__.py +++ b/src/lib_not_dr/loggers/__init__.py @@ -99,13 +99,13 @@ class LogLevel(Options): # fmt: off from lib_not_dr.loggers.config import get_logger, get_config, read_config # noqa: E402 +from lib_not_dr.loggers import config # noqa: E402 if TYPE_CHECKING: from lib_not_dr.loggers import logger from lib_not_dr.loggers import formatter from lib_not_dr.loggers import outstream from lib_not_dr.loggers import structure - from lib_not_dr.loggers import config __all__ = [ # modules diff --git a/src/lib_not_dr/loggers/config.py b/src/lib_not_dr/loggers/config.py index 3c2c838..5939fbb 100644 --- a/src/lib_not_dr/loggers/config.py +++ b/src/lib_not_dr/loggers/config.py @@ -324,11 +324,13 @@ _storage = ConfigStorage(loggers={'root': Logger(logger_name='root')}) def get_config() -> ConfigStorage: + global _storage return _storage def get_logger(name: str = 'root', storage: Optional[ConfigStorage] = None) -> Logger: if storage is None: + global _storage storage = _storage if name not in storage.loggers: @@ -338,9 +340,42 @@ def get_logger(name: str = 'root', storage: Optional[ConfigStorage] = None) -> L return storage.loggers[name] +def get_logger_from_old(name: str, old_name: str = 'root', storage: Optional[ConfigStorage] = None) -> Logger: + if storage is None: + global _storage + storage = _storage + + if name not in storage.loggers: + root_log = get_logger(old_name, storage).clone_logger() + root_log.logger_name = name + storage.loggers[name] = root_log + return storage.loggers[name] + + +def add_logger(name: str, logger: Logger, storage: Optional[ConfigStorage] = None) -> None: + if storage is None: + global _storage + storage = _storage + + storage.loggers[name] = logger + + def read_config(log_config: Dict, storage: Optional[ConfigStorage] = None) -> ConfigStorage: if storage is None: + global _storage storage = _storage storage.read_dict_config(log_config) return storage + + +# fmt: off +__all__ = [ + "get_config", + "get_logger", + "_storage", + "read_config", + "ConfigStorage", +] +# 整的跟 export 一样 +# fmt: on