From 81cd8ab9d26d0560efd8238620a0c0152eb5b6b8 Mon Sep 17 00:00:00 2001 From: 苏向夜 Date: Mon, 11 Dec 2023 00:21:20 +0800 Subject: :recycle: 重构log.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hydrorollcore/__init__.py | 4 +--- src/hydrorollcore/cli.py | 2 +- src/hydrorollcore/event.py | 2 +- src/hydrorollcore/log.py | 40 ---------------------------------------- src/hydrorollcore/logging.py | 40 ++++++++++++++++++++++++++++++++++++++++ src/hydrorollcore/manager.py | 18 ++++++++++++++++++ src/hydrorollcore/rule.py | 2 ++ 7 files changed, 63 insertions(+), 45 deletions(-) delete mode 100644 src/hydrorollcore/log.py create mode 100644 src/hydrorollcore/logging.py create mode 100644 src/hydrorollcore/manager.py (limited to 'src') diff --git a/src/hydrorollcore/__init__.py b/src/hydrorollcore/__init__.py index 12d44f21..2aca9dd7 100644 --- a/src/hydrorollcore/__init__.py +++ b/src/hydrorollcore/__init__.py @@ -1,8 +1,6 @@ from HydroRollCore.cli import Cli -from HydroRollCore.config import Config from HydroRollCore.rule import Rule, Result, Dice -from HydroRollCore.core import Core from HydroRollCore.typing import Config as ConfigTyping from HydroRollCore.event import Event -__all__ = ["Core", "Rule", "Config", "Cli", "Result", "Dice", "Event", "ConfigTyping"] +__all__ = ["Rule", "Cli", "Result", "Dice", "Event", "ConfigTyping"] diff --git a/src/hydrorollcore/cli.py b/src/hydrorollcore/cli.py index 0b906f25..51d8d983 100644 --- a/src/hydrorollcore/cli.py +++ b/src/hydrorollcore/cli.py @@ -1,6 +1,6 @@ from pathlib import Path from .consts import templates -from .log import logger +from .logging import logger import argparse import os diff --git a/src/hydrorollcore/event.py b/src/hydrorollcore/event.py index bec0399e..4e9c6611 100644 --- a/src/hydrorollcore/event.py +++ b/src/hydrorollcore/event.py @@ -1,5 +1,5 @@ from .typing import Dict -from .log import logger +from .logging import logger import re diff --git a/src/hydrorollcore/log.py b/src/hydrorollcore/log.py deleted file mode 100644 index a559561f..00000000 --- a/src/hydrorollcore/log.py +++ /dev/null @@ -1,40 +0,0 @@ -"""HydroRollCore 日志。 - -HydroRollCore 使用 [loguru](https://github.com/Delgan/loguru) 来记录日志信息。 -自定义 logger 请参考 [loguru](https://github.com/Delgan/loguru) 文档。 -""" -from datetime import datetime -from multilogging import multilogger -from pathlib import Path -from .settings import DEBUG - - -__all__ = ["logger", "error_or_exception"] - -logger = multilogger( - name="HydroRoll", payload="Core", level="DEBUG" if DEBUG else "INFO" -) -current_path = Path(__file__).resolve().parent -LOG_PATH = current_path / "logs" -if not LOG_PATH.exists(): - LOG_PATH.mkdir(parents=True, exist_ok=True) -logger.add( - sink=LOG_PATH / (datetime.now().strftime("%Y-%m-%d") + ".log"), - level="INFO", - rotation="10 MB", -) # 每个日志文件最大为 10MB - - -def error_or_exception(message: str, exception: Exception, verbose: bool = True): - # 弃用的方法 - # logger.remove() - # logger.add( - # sys.stderr, - # format="{time:YYYY-MM-DD HH:mm:ss.SSS} [{level}] > {name}:{function}:{line} - {message}", - # ) - - if verbose: - logger.exception(exception) - logger.critical(message) - else: - logger.critical(f"{message} {exception!r}") diff --git a/src/hydrorollcore/logging.py b/src/hydrorollcore/logging.py new file mode 100644 index 00000000..a559561f --- /dev/null +++ b/src/hydrorollcore/logging.py @@ -0,0 +1,40 @@ +"""HydroRollCore 日志。 + +HydroRollCore 使用 [loguru](https://github.com/Delgan/loguru) 来记录日志信息。 +自定义 logger 请参考 [loguru](https://github.com/Delgan/loguru) 文档。 +""" +from datetime import datetime +from multilogging import multilogger +from pathlib import Path +from .settings import DEBUG + + +__all__ = ["logger", "error_or_exception"] + +logger = multilogger( + name="HydroRoll", payload="Core", level="DEBUG" if DEBUG else "INFO" +) +current_path = Path(__file__).resolve().parent +LOG_PATH = current_path / "logs" +if not LOG_PATH.exists(): + LOG_PATH.mkdir(parents=True, exist_ok=True) +logger.add( + sink=LOG_PATH / (datetime.now().strftime("%Y-%m-%d") + ".log"), + level="INFO", + rotation="10 MB", +) # 每个日志文件最大为 10MB + + +def error_or_exception(message: str, exception: Exception, verbose: bool = True): + # 弃用的方法 + # logger.remove() + # logger.add( + # sys.stderr, + # format="{time:YYYY-MM-DD HH:mm:ss.SSS} [{level}] > {name}:{function}:{line} - {message}", + # ) + + if verbose: + logger.exception(exception) + logger.critical(message) + else: + logger.critical(f"{message} {exception!r}") diff --git a/src/hydrorollcore/manager.py b/src/hydrorollcore/manager.py new file mode 100644 index 00000000..83db77ce --- /dev/null +++ b/src/hydrorollcore/manager.py @@ -0,0 +1,18 @@ +from .event import Events, events +from .logging import logger +from .typing import Dict + + +class Manager: + """事件处理单元""" + + events: Events + + def __init__(self, _events: Events = None) -> None: + self.events = _events if _events else events + + def roll(roll_string: str): + ... + + +manager = Manager() diff --git a/src/hydrorollcore/rule.py b/src/hydrorollcore/rule.py index 127ed805..a1f04151 100644 --- a/src/hydrorollcore/rule.py +++ b/src/hydrorollcore/rule.py @@ -1,6 +1,7 @@ from abc import ABCMeta, abstractmethod from enum import Enum from .exceptions import HydroError +from .typing import Dict __all__ = ["RuleLoadType", "Result", "Dice", "Rule"] @@ -62,6 +63,7 @@ class Rule(metaclass=ABCMeta): """规则基类""" name: str + dices: Dict[str, str] = {} priority: int = 0 @abstractmethod -- cgit v1.2.3-70-g09d2