Source code for manim_pymunk.utils.logger_tool
__all__ = ["manim_pymunk_logger"]
import logging
import threading
[docs]
class SingletonLogger:
_instance_lock = threading.Lock()
_instance = None
def __new__(cls, *args, **kwargs):
# 双重检查锁定,确保线程安全
if not cls._instance:
with cls._instance_lock:
if not cls._instance:
cls._instance = super(SingletonLogger, cls).__new__(cls)
cls._instance._inherited_init()
return cls._instance
[docs]
def _inherited_init(self):
"""在这里配置你的日志逻辑"""
self.logger = logging.getLogger("MySingletonLogger")
self.logger.setLevel(logging.DEBUG)
self.logger.propagate = False
# 避免重复添加处理器
if not self.logger.handlers:
# 1. 定义格式
log_format = "manim-pymunk:[%(levelname)s]:%(asctime)s:%(filename)s:%(message)s"
date_format = "%Y-%m-%d %H-%M-%S"
formatter = logging.Formatter(log_format, date_format)
# 2. 控制台处理器
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
self.logger.addHandler(console_handler)
[docs]
def get_logger(self):
return self.logger
# 为了方便使用,可以直接实例化一个全局对象
manim_pymunk_logger = SingletonLogger().get_logger()