"""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" / (datetime.now().strftime("%Y-%m-%d") + ".log") if not LOG_PATH.exists(): LOG_PATH.mkdir(parents=True, exist_ok=True) logger.add(sink=LOG_PATH, 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}")