Python自动化(9)——log模块

Python自动化(9)------log模块

 
log模块实际上就是将所有print输出的信息收集起来,可以实现在pyqt5界面上显示,并且支持将所有的输出保存为文本文件的模块。
实际上还可以做得更加通用,例如增加一些前缀以区分不同的任务,不同的线程。甚至可以通过检测部分log信息中是否存在关键字,并根据关键字做一些特殊的操作(例如处理找图失败或识字失败的情况,等等)。

实现一个简单的log模块

python 复制代码
#! /usr/bin env python3
# -*- coding:utf-8 -*-
# 日志模块

import os
import datetime

class Log:
    def __init__(self, _screen=None, _logCallback = None) -> None:
        self.logStr = ''
        self.screen = _screen
        self.logCallback = _logCallback
        self.preOutInfo = ''
        self.keyWords = []
        print('Log init')

    def bind(self, hwnd=None):
        self.hwnd = hwnd
        if self.screen:
        self.screen.bind(hwnd)
        self.logStr = 'hwnd: ' + self.logStr + str(hwnd) + '\n'
    
    def save(self, info=None):
        if not info:
            info = self.logStr
        currentdir = os.path.dirname(os.path.realpath(__file__))
        file = open(currentdir+'/log_'+str(datetime.datetime.now().strftime("%Y_%m_%d"))+'.txt', "a", encoding='utf-8')
        file.write(info)
        file.close()

    def setLogPreOutInfo(self, info):
        self.preOutInfo = info

    def setKeyWord(self, keyWords):
        self.keyWords = keyWords

    def addKeyWord(self, keyWord):
        self.keyWords.append(keyWord)

    def containKeyWord(self, _str:str):
        for keyWord in self.keyWords:
            if _str.find(keyWord) != -1:
                return True
        return False

    def printLog(self, info):
        s = str(datetime.datetime.now().strftime("%Y_%m_%d %H:%M:%S")) + '_' + self.preOutInfo + ': ' + str(info)
        self.logStr = self.logStr + s + '\n'
        print(s)
        if self.logCallback:
            self.logCallback(s)
        if self.containKeyWord(info) and self.screen:
            saveName = './Temp/'+str(datetime.datetime.now().strftime("%Y_%m_%d_%H_%M_%S"))+'_'+self.preOutInfo + ': '+info+'_.png'
            self.screen.captureScreen(saveName)

逻辑比较简单,核心只是把print方法封装一层,增加一些通用方法如:保存日志、设置日志前缀、设置关键词,触发关键词截屏等功能。

因为需要截屏,因此可以传入截屏模块Screen。

还有个logCallback的参数,是每次调用printLog方法时触发的回调,我一般用于显示pyqt5界面上的日志。

完整自动化工程代码:https://gitee.com/chj-self/PythonRobotization

大佬们找到问题欢迎拍砖~

相关推荐
夜雪一千27 分钟前
应用层加密的优缺点
python
计算机编程指导师39 分钟前
【计算机毕设选题推荐】基于Hadoop+Spark的化妆品销售大数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·化妆品
用户0332126663671 小时前
Python 实用技巧:从零自主生成结构化 PDF 页面
python
benchmark_cc1 小时前
前复权数据每天可能变化,历史数据库应该覆盖还是保留原始价格?
大数据·python·pandas·量化交易·股票数据·quantdash
计算机编程指导师1 小时前
计算机毕设选题推荐:Hadoop大数据下的个体肥胖健康风险评估与可视化系统源码 毕业设计 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·肥胖健康风险
code2cat1 小时前
【随笔】MCP输入Schema:把参数错误拦在工具执行之前
python·json schema·ai agent·mcp
计算机编程指导师1 小时前
Python大数据毕设怎么写?Django结合Hadoop+Spark京东销售分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·京东商品
合尘猫1 小时前
AI 项目上线就停:一次事件循环阻塞的完整排查过程
人工智能·后端·python
染指11102 小时前
142.Agent-多Agent框架-通过Skills实现多Agent
开发语言·人工智能·python·langchain·agents
天国梦2 小时前
国密门禁品牌怎么选?2026年最新3个避坑要点
运维·服务器·数据库·python