Python日志实时读取

来自CloudWiki
跳转至: 导航搜索

基本操作

日志输出端

import logging

logging.basicConfig(
    level=logging.DEBUG,
    format="%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s",  # 日志的格式
    datefmt=" %Y-%m-%d %H:%M:%S",  # 时间格式
    filename="./lx_log1.log",  # 指定文件位置
    filemode="a",
)

while True:
    try:
        num = input("请输入一个整数: ")
        if num == 'q':
            break;
        num = eval(num)
        print(num**2)
        logging.info("info message:input an number" +str(num))
        
    
        
    except NameError:
        print("输入错误,请输入一个整数!")
        logging.error("input message:input error,pls input an num")

logging.info("end message:退出循环")

日志读取端

from time import sleep
start_point=0
def read_logs():
  fo = open("./lx_log1.log", "rb") # 一定要用'rb'因为seek 是以bytes来计算的
  
  global start_point #使用全局变量,让start_point 时刻保持在已经输出过的那个字节位
  fo.seek(start_point, 1)#移动文件读取指针到指定位置 
  for line in fo.readlines():
    print ("文件: ", fo.name, str(line.decode()))
  #输出后的指针位置赋值给start_piont
  start_point=fo.tell()
  fo.close()

if __name__=='__main__':
    while True:
        read_logs()
        sleep(1)

效果图

Vue2022041901.png

进阶操作

分析日志信息,普通信息有多少,警告有多少,错误有多少

高级操作

将日志信息在图表上实时显示