diff options
| author | 2023-12-11 01:12:41 +0800 | |
|---|---|---|
| committer | 2023-12-11 01:12:41 +0800 | |
| commit | 60df69ff0e36ffa3f966d663ad6de3028141e064 (patch) | |
| tree | 569115937c58d0ba955932446f598500c9650939 /src/hydrorollcore/logging.py | |
| parent | 5781a072250a147d5e636b269fd0a8b7a0b045da (diff) | |
| parent | 0a688b5105daf563baffedcfb21e16332fe4494e (diff) | |
| download | infini-60df69ff0e36ffa3f966d663ad6de3028141e064.tar.gz infini-60df69ff0e36ffa3f966d663ad6de3028141e064.zip | |
Merge pull request #37 from HydroRoll-Team/sourcery/pull-36
✨ 实现消息事件文本生成 实现子类注册器 (Sourcery refactored)
Diffstat (limited to 'src/hydrorollcore/logging.py')
| -rw-r--r-- | src/hydrorollcore/logging.py | 40 |
1 files changed, 40 insertions, 0 deletions
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="<magenta>{time:YYYY-MM-DD HH:mm:ss.SSS}</magenta> <level>[{level}]</level> > <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>", + # ) + + if verbose: + logger.exception(exception) + logger.critical(message) + else: + logger.critical(f"{message} {exception!r}") |
