以下是一个简单的Python日志系统,可以实时查看日志:

import logging
import time

from flask import Flask, render_template

app = Flask(__name__)

# 设置日志格式
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

# 创建一个日志文件
handler = logging.FileHandler('app.log')
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logging.getLogger('').addHandler(handler)

# 显示日志
@app.route('/')
def index():
    return render_template('index.html')

# 实时日志
@app.route('/log')
def log():
    def generate():
        with open('app.log') as f:
            while True:
                line = f.readline()
                if not line:
                    time.sleep(1)
                    continue
                yield line
    return app.response_class(generate(), mimetype='text/plain')

if __name__ == '__main__':
    app.run(debug=True)

在上面的代码中,我们使用Flask框架创建一个Web应用程序。我们使用Python内置的logging模块来记录日志,并在页面上显示实时日志。

我们使用logging.basicConfig()函数来设置日志级别和格式。然后,我们创建一个日志文件并将其添加到logging模块中。

index()函数中,我们返回一个HTML页面,该页面包含一个JavaScript代码段,它会定期向服务器发送请求以检查是否有新日志消息。如果有新消息,它将在页面上显示出来。

log()函数中,我们使用yield关键字和Python的生成器来实现实时日志。我们打开日志文件并使用readline()函数读取每一行。如果没有新行,我们使用time.sleep()函数暂停1秒钟,然后继续读取。如果有新行,我们使用yield将其发送到客户端。

我们将generate()函数作为响应传递给app.response_class()函数,该函数将其包装在一个响应对象中,并将响应的MIME类型设置为text/plain。这意味着我们可以在页面上显示纯文本日志。

最后,我们使用app.run()函数启动应用程序。我们将debug参数设置为True,这意味着我们可以在开发环境中轻松地调试应用程序。


原文地址: https://www.cveoy.top/t/topic/bsTN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录