Python进阶小技巧:生成式实现日志实时跟踪器

代码目标: 实时监控日志文件改变(如Unix ‘tail -f’)。

准备: 日志文件的生成

# logging模块主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。
import logging
import random

# 日志记录的基本配置
logging.basicConfig(
    level=logging.DEBUG,  # 控制台打印的日志级别
    filename='message.log',  # 日志文件位置
    filemode='a',  # 写入文件的模式,a是追加模式,默认是追加模式
    # 日志格式
    format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
)

# 随机写入100条日志信息
infos = ["Network start success", 'Vsftpd Start Sucess', 'Httpd Configure Success']
for count in range(100):
    logging.info(random.choice(infos))
    

代码生成的日志文件如下:
在这里插入图片描述

代码

为了实时监控日志文件改变(如Unix ‘tail -f’), 编写代码如下:

# tail.py
# A generator that follows a log file like Unix 'tail -f'.
# Note: To see this example work, you need to apply to
# an active server log file. 


import time

def follow(fp):
    """
    实时监控文件对象的内容,如果修改,实时打印或者做其他处理
    :param fp: 文件对象 
    :return: 
    """
    # 移动文件指针到文件最后
    fp.seek(0,2)      # Go to the end of the file
    while True:
         # 读取文件的一行内容
         line = fp.readline()
         if not line:
             time.sleep(0.1)    # Sleep briefly
             continue
         yield line
# Example use
if __name__ == '__main__':
    logfile = open('message.log')
    for line in follow(logfile):
        print(line.strip(), )

运行代码时, 在当前目录自己创建一个日志文件message.log,不断写入日志文件, 看是否能检测到日志文件的改变。 代码执行效果如下:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值