47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
import logging
|
|
|
|
class LogHandler(logging.Handler):
|
|
_instance = None
|
|
_widget = None
|
|
|
|
def __new__(cls):
|
|
if cls._instance is None:
|
|
cls._instance = super().__new__(cls)
|
|
return cls._instance
|
|
|
|
def __init__(self):
|
|
if not hasattr(self, '_initialized'):
|
|
super().__init__()
|
|
self._initialized = True
|
|
self.setFormatter(logging.Formatter('%(message)s'))
|
|
|
|
@classmethod
|
|
def set_widget(cls, widget):
|
|
cls._widget = widget
|
|
|
|
def emit(self, record):
|
|
if self._widget:
|
|
self._widget.append_log(
|
|
record.levelname,
|
|
self.format(record)
|
|
)
|
|
|
|
def setup_logger():
|
|
"""设置全局日志配置"""
|
|
# 配置根日志记录器
|
|
root_logger = logging.getLogger()
|
|
root_logger.setLevel(logging.DEBUG)
|
|
|
|
# 获取或创建日志处理器实例
|
|
handler = LogHandler()
|
|
|
|
# 检查是否已经添加了这个处理器
|
|
for existing_handler in root_logger.handlers:
|
|
if isinstance(existing_handler, LogHandler):
|
|
return handler
|
|
|
|
# 如果没有,则添加处理器
|
|
root_logger.addHandler(handler)
|
|
return handler
|
|
|
|
logger = logging.getLogger(__name__) |