Files
AutoControlSystem-git/Util/util_log.py
2024-11-02 15:50:58 +08:00

60 lines
2.3 KiB
Python

import logging
from logging.handlers import TimedRotatingFileHandler
class QTextEditLogger(logging.Handler):
def __init__(self, text_widget):
super().__init__()
self.widget = text_widget
def emit(self, record):
# 格式化日志信息
log_message = self.format(record)
# 在主线程中更新 QTextEdit
self.widget.append(log_message)
class Logger:
def __init__(self):
self.logger_textEdit_info = logging.getLogger('info_logger')
self.logger_textEdit_info.setLevel(logging.INFO)
self.logger_textEdit_warning = logging.getLogger('warning_logger')
self.logger_textEdit_warning.setLevel(logging.WARNING)
self.logger_file_info = logging.getLogger('file_logger')
self.logger_file_info.setLevel(logging.INFO)
self.pre_message = ''
def init_log(self,textEdit_info,textEdit_warning,file_path):
text_edit_handler = QTextEditLogger(textEdit_info)
formatter = logging.Formatter('%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
text_edit_handler.setFormatter(formatter)
self.logger_textEdit_info.addHandler(text_edit_handler)
text_edit_handler_warning = QTextEditLogger(textEdit_warning)
formatter_warning = logging.Formatter('%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
text_edit_handler_warning.setFormatter(formatter_warning)
self.logger_textEdit_warning.addHandler(text_edit_handler_warning)
handler = TimedRotatingFileHandler(file_path, when="D", interval=1, backupCount=30)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
handler.setFormatter(formatter)
self.logger_file_info.addHandler(handler)
def log_message(self,level,message):
if message != self.pre_message:
self.pre_message = message
else:
return
if level == logging.INFO:
self.logger_textEdit_info.info(message)
self.logger_file_info.info(message)
if level == logging.ERROR:
self.logger_textEdit_info.error(message)
self.logger_file_info.error(message)
self.logger_textEdit_warning.error(message)
if level == logging.WARNING:
self.logger_file_info.warning(message)
log = Logger()