输出改用logging

This commit is contained in:
halliday2023 2024-02-13 17:05:46 +08:00
parent 6547b5cca4
commit 45a904d8c7
2 changed files with 49 additions and 18 deletions

View File

@ -1,6 +1,8 @@
# -*- coding:utf-8 -*- # -*- coding:utf-8 -*-
import os import os
import sys import sys
import logging
import fileDataCreating import fileDataCreating
import global_var import global_var
@ -19,7 +21,7 @@ ui_file_patch = path.parent.parent / "ui" / "ui_main.ui"
# 从文件中加载UI定义 # 从文件中加载UI定义
formType, baseType = loadUiType(str(ui_file_patch)) formType, baseType = loadUiType(str(ui_file_patch))
# 重定向输出 # 控制台重定向到GUI
class EmittingStr(QObject): class EmittingStr(QObject):
# 定义信号 # 定义信号
textWritten = Signal(str) textWritten = Signal(str)
@ -32,6 +34,11 @@ class EmittingStr(QObject):
loop.exec_() loop.exec_()
QApplication.processEvents() QApplication.processEvents()
# logging重定向到print
class PrintHandler(logging.Handler):
def emit(self, record):
pass
# 处理文件的线程 # 处理文件的线程
class FileThread(QThread): class FileThread(QThread):
@ -58,6 +65,15 @@ class Window(formType, baseType):
sys.stdout = EmittingStr() sys.stdout = EmittingStr()
sys.stdout.textWritten.connect(self.outputWritten) sys.stdout.textWritten.connect(self.outputWritten)
# 创建并配置logger
self.logger = logging.getLogger()
self.logger.setLevel(logging.INFO)
# 创建并配置处理程序
handler = PrintHandler()
handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
self.logger.addHandler(handler)
# 输出到GUI信号处理函数 # 输出到GUI信号处理函数
def outputWritten(self, text): def outputWritten(self, text):
cursor = self.Log_Output.textCursor() cursor = self.Log_Output.textCursor()
@ -69,7 +85,7 @@ class Window(formType, baseType):
@Slot() #声明槽函数 @Slot() #声明槽函数
def start(self): def start(self):
print('点击了开始按钮') self.logger.info("点击了开始按钮")
# 输入框参数校验 # 输入框参数校验
num = self.tabWidget.currentIndex() num = self.tabWidget.currentIndex()
if num == 0: if num == 0:
@ -87,7 +103,7 @@ class Window(formType, baseType):
@Slot() @Slot()
def stop(self): def stop(self):
print('点击了停止按钮') self.logger.info("点击了停止按钮")
num = self.tabWidget.currentIndex() num = self.tabWidget.currentIndex()
if num == 0: if num == 0:
self.stop_run_file() self.stop_run_file()
@ -99,10 +115,10 @@ class Window(formType, baseType):
@Slot() @Slot()
def conntest(self): def conntest(self):
print('点击了测试连接按钮') self.logger.info("点击了测试连接按钮")
self.check_db_input() self.check_db_input()
# TODO(MH):校验连接信息 # TODO(MH):校验连接信息
print('数据库连接成功') self.logger.info("数据库连接成功")
def setup_thread(self): def setup_thread(self):
@ -120,17 +136,17 @@ class Window(formType, baseType):
def check_file_input(self): def check_file_input(self):
print('文件参数校验通过') self.logger.info("文件参数校验通过")
def check_db_input(self): def check_db_input(self):
print('数据库参数校验通过,开始连接数据库测试。。。') self.logger.info("数据库参数校验通过,开始连接数据库测试。。。")
def start_run_file(self): def start_run_file(self):
# 调用文件处理脚本 # 调用文件处理脚本
print('开始生成文件。。。') self.logger.info("开始生成文件。。。")

View File

@ -7,6 +7,8 @@ import csv
import yaml import yaml
import time import time
import global_var import global_var
import logging
from schedule import every, repeat, run_pending from schedule import every, repeat, run_pending
from pathlib import Path from pathlib import Path
@ -24,6 +26,19 @@ from random import choice
""" """
class PrintHandler(logging.Handler):
def emit(self, record):
msg = self.format(record)
print(msg)
# 创建并配置logger
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# 创建并配置处理程序
handler = PrintHandler()
handler.setFormatter(logging.Formatter('%(asctime)s - %(levelname)s - %(message)s'))
logger.addHandler(handler)
# 定义公共的部分 # 定义公共的部分
path = Path(__file__) path = Path(__file__)
etc_dir = path.parent.parent / "etc" etc_dir = path.parent.parent / "etc"
@ -64,7 +79,7 @@ def file_info():
# 每小时生成一个csv文件 # 每小时生成一个csv文件
# @repeat(every(1).hours)--MH:这个是基于运行的时间,不是基于系统时间 # @repeat(every(1).hours)--MH:这个是基于运行的时间,不是基于系统时间
def new(): def new():
print('new...') logger.info('new...')
# 创建文件夹 # 创建文件夹
finfo = file_info() finfo = file_info()
if not finfo[2].exists(): if not finfo[2].exists():
@ -73,19 +88,19 @@ def new():
faker_data.save_data_csv(finfo[4], lines=100) faker_data.save_data_csv(finfo[4], lines=100)
# 每2秒插入N条数据 # 每1秒插入N条数据
@repeat(every(2).seconds) @repeat(every(1).seconds)
def inserting(): def inserting():
finfo = file_info() finfo = file_info()
if finfo[4].exists(): if finfo[4].exists():
print('insert...') logger.info('insert...')
datas = faker_data.faker_data(lines=config['InsertRows'])[1:] datas = faker_data.faker_data(lines=config['InsertRows'])[1:]
with open(finfo[4], 'a+', encoding='utf-8', newline='') as file_csv: with open(finfo[4], 'a+', encoding='utf-8', newline='') as file_csv:
writer = csv.writer(file_csv, delimiter=',', writer = csv.writer(file_csv, delimiter=',',
quotechar='"', quoting=csv.QUOTE_ALL) quotechar='"', quoting=csv.QUOTE_ALL)
writer.writerows(datas) writer.writerows(datas)
else: else:
print(str(finfo[4])+" is not exists,wating") logger.info(str(finfo[4])+" is not exists,wating")
# 手动去调一下,让其整点创建 # 手动去调一下,让其整点创建
new() new()
@ -98,7 +113,7 @@ def deleting_data():
files = list(finfo[2].glob('*.csv')) files = list(finfo[2].glob('*.csv'))
if len(files) > 1: if len(files) > 1:
file = choice(files[:-1]) file = choice(files[:-1])
print(str(file) + "start delete data ....") logger.info(str(file) + "start delete data ....")
# 删除掉前N条数据 # 删除掉前N条数据
with open(file, 'rb') as fr: with open(file, 'rb') as fr:
data = fr.readlines() data = fr.readlines()
@ -108,21 +123,21 @@ def deleting_data():
with open(file, 'wb') as fw: with open(file, 'wb') as fw:
fw.writelines(new_data) fw.writelines(new_data)
else: else:
print("file number is less 1,wait next time.") logger.info("file number is less 1,wait next time.")
# 每隔6小时删除1个文件,低于3个不删除 # 每隔6小时删除1个文件,低于3个不删除
@repeat(every(6).hours) @repeat(every(6).hours)
# @repeat(every(2).seconds) # @repeat(every(2).seconds)
def deleting_file(): def deleting_file():
print("deleting file ....") logger.info("deleting file ....")
# 从data目录中随机选一个 # 从data目录中随机选一个
files = list(data_dir.rglob('*.csv')) files = list(data_dir.rglob('*.csv'))
if len(files) > 3: if len(files) > 3:
file = choice(files[:-1]) file = choice(files[:-1])
file.unlink() file.unlink()
else: else:
print("file num is less 3, not delete. wait next time.") logger.info("file num is less 3, not delete. wait next time.")
def main(): def main():
start_flag = True start_flag = True
@ -130,7 +145,7 @@ def main():
start_flag = global_var.get_value('start_flag') start_flag = global_var.get_value('start_flag')
run_pending() run_pending()
time.sleep(0.3) time.sleep(0.3)
print("已经停止") logger.info("程序已经停止")
if __name__ == '__main__': if __name__ == '__main__':