60 lines
2.3 KiB
Python
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() |