首页 > 编程语言 >Python分析嵌入式日志小工具开发

Python分析嵌入式日志小工具开发

时间:2023-03-09 14:22:42浏览次数:31  
标签:Python 重启 嵌入式 result file time print 日志

背景

数据可度量,无人可值守,问题早发现

功能点

  1. 关键字分析
  2. 自动压缩LOG
  3. 自动发送邮件

代码


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/8/27 09:39
# @Author  : 局长
# @Site    :
# @File    : XXX.py
# @Software: PyCharm
import time
import datetime
import re
import os
import sys
import platform
import zipfile
import shutil
from time import strftime
from SendMail import *

def TestLog(file_path):
    # print('■' * 60)
    print("-" * 60)
    print('xxx日志结果统计如下:')
    print('日志名称:%s' % file_path)
    print("-" * 60)
    time_local=time.strftime("%Y-%m-%d", time.localtime())
    print('拷机日期:%s' % time_local)
    log_keywords = {"key":'value',
          
                    }
    txt = open(file_path,'r',encoding="utf-8").read()
    result = {}
    for key,value in log_keywords.items(): 
        test_text = len(re.findall(key,txt))
        print("关键字[ %s ]"%key+ ",%s"%value + ":%s"%test_text)
        result[value] = test_text

判断语句

判断分析出的日志内容是否有异常,如果有,则进行压缩,并发送邮件,如果没有,就不操作。

if result['重启'] != 0 or result['重启且未恢复'] != 0:
        print("WiFi有重启异常,Watchdog重启次数为:%s 次。\n重启未恢复次数为:%s 次。\n日志将通过邮件方式送达你的邮箱,请查收!" % (result['重启次数'],result['重启且未恢复(关闭了watchdog)']))
        print("RX重置次数为%s 次"%result['UVC重置,RX重启'])
        # 压缩日志文件
        ZipLogFiles()
        # AutoSend_Mail()
    elif result['UVC重置,RX重启'] != 0:
        print("RX程序有重启异常,重启次数为:%s 次。\n日志将通过邮件方式送达你的邮箱,请查收!" % result['UVC重置,RX重启'])
        for i in range(n,n+1):
            #不再重复执行压缩文件+邮件发送,跳出
            if i == 0:
                ZipLogFiles()
                # AutoSend_Mail()
                break
            print("检测已发过日志邮件,不进行二次发送!")
    else:
        xunluoTime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        print("巡检时间:%s  未发现程序崩溃异常,巡检继续进行..."%xunluoTime)

压缩日志

###对问题日志进行压缩处理

"""定义全局变量"""
logsdir = r"C:\Users"  # 表示当前文件路径
compressPathName = r"C:\Users\问题日志.zip"
n = 0
def ZipLogFiles():
    ### 压缩
    """声明全局变量"""
    global logsdir,compressPathName,n
    logsdir = logsdir # 表示当前文件路径
    compressPathName = compressPathName
    zip_file = zipfile.ZipFile(compressPathName, 'w', zipfile.ZIP_DEFLATED)

    # 遍历文件夹下的所有.log文件,并进行压缩
    for files in os.listdir(logsdir):
        if files.endswith(".log"):
            file_path = os.path.join(logsdir, files)  # 会返回压缩包内所有文件名的列表
            zip_file.write(file_path, files)  # 将文件写入zip压缩文件——正常压缩,不出现多层目录
    zip_file.close()
    print("压缩完成!")
    n+=1

调用执行

可以对执行代码进行定时巡航。


import time
# from QVZipMailTest import *
from QVLogTest import *
AutoTestTime=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
t = 1
while t < 100:
    print("自动执行时间:%s  开始进行第%s次自动化测试!"%(AutoTestTime,n))
   
    TestLog(file_path_1=r'C:\Users\xxx.log')  # WiFi替换路径即可
    t+=1
    time.sleep(3600)

邮件自动发送的就不展示了,关注公众号「测试情报局」后台回复「关键字分析」,可以获取全部源码。

标签:Python,重启,嵌入式,result,file,time,print,日志
From: https://www.cnblogs.com/aszeno/p/17198236.html

相关文章

  • python不设置环境变量 如何安装第三方库
    电脑安装的python环境有好多个,有的是用conda建立的虚拟环境,有的不是,用conda建立的管理起来没什么好说的,自定义的python环境如果没有设置环境变量,在控制台管理起来就不是那......
  • 实验1 Python开发环境使用和编程初体验
    实验目的:实验任务1:task1-11#print输出的几种用法23#用法1:用于输出单个字符串或单个变量45print('hey,u')678#用法2:用于输出多个数据项,用逗......
  • 实验1 Python开发环境使用和编程初体验
    实验任务1task1-1Python源码1print('hey,u')2print('hey','u')3x,y,z=1,2,34print(x,y,z)1x,y,z=1,2,32print('x=%d,y=%d,z=%d'%(x,y,z)......
  • python+playwright 学习-27 鼠标悬停 hover() 和listitem 定位
    前言鼠标悬停到某个元素上后出现一些选项,这是很常见的操作了,playwright操作鼠标悬停非常简单,只需调用hover()方法。鼠标悬停打开官网https://playwright.dev/鼠标悬......
  • OpenAI/ChatGPT的Python API,关于os.getenv()环境变量设置问题。
    OpenAI官方的pythonapi连接示例中有一行代码openai.api_key=os.getenv("OPENAI_API_KEY")其中的os.getenv()是从环境中获取环境变量,上面代码要获取的就是OP......
  • 使用Python实现简易版Netcat
    NetcatNetcat是一种网络工具,也称为“nc”,可用于在计算机网络之间进行TCP/IP或UDP连接。它可以用于连接到其他计算机上的端口,发送和接收数据,扫描端口以及创建服务器等。使......
  • 实验1 Python开发环境使用和编程初体验
    task1_1:1.print('hey,u')print('hey','u')x,y,z=1,2,3print(x,y,z)print('x=%d,y=%d,z=%d'%(x,y,z))print('x={},y={},z={}'.format(x,y,z))print(f'x={x},y=......
  • Python列表(list)
    Python 列表(List)序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字-它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。Python有6个序列的内置类......
  • Android学习日志
    App工程分为两个层次,第一个层次是项目,另一个层次是模块模块依附于项目,每个项目至少有一个模块,也能拥有多个模块一般所言的“编译运行App”,是指运行某个模块,而非运行某个......
  • Python单例模式
    单例模式(SingletonPattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上......