brisonus_app_eq/component/widget_log/log_handler.py

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__)