当前位置: 首页 > 面试题库 >

在更新日志文件时显示其内容

房光临
2023-03-14
问题内容

我有诸如ffmpeg和gstreamer之类的外部程序在后台运行并写入日志文件。我想用我的Flask应用程序显示此日志的内容,以便用户可以像tail -f job.log在终端中那样观看日志更新。

我试图<object data="/out.log" type="text/plain">指向日志文件,但是无法显示数据,或者浏览器告诉我我需要一个插件。

如何在HTML页面中嵌入和更新日志文件?


问题答案:

使用Flask视图可以永久不断地从文件中读取数据并流式传输响应。使用JavaScript从流中读取并更新页面。本示例发送了整个文件,您可能希望在某个时候截断该文件以节省带宽和内存。此示例在两次读取之间睡眠,以减少来自无限循环的cpu负载,并允许其他线程有更多活动时间。

from time import sleep
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/stream')
def stream():
    def generate():
        with open('job.log') as f:
            while True:
                yield f.read()
                sleep(1)

    return app.response_class(generate(), mimetype='text/plain')

app.run()

<pre id="output"></pre>
<script>
    var output = document.getElementById('output');

    var xhr = new XMLHttpRequest();
    xhr.open('GET', '{{ url_for('stream') }}');
    xhr.send();

    setInterval(function() {
        output.textContent = xhr.responseText;
    }, 1000);
</script>

这几乎与该答案相同,后者描述了如何流式传输和解析消息,尽管永远从外部文件中读取数据已经足够新颖,可以说是它自己的答案。这里的代码更简单,因为我们不在乎解析消息或结束流,而只是永久拖尾文件。



 类似资料:
  • myisamlog处理MyISAM日志文件内容。 象这样调用myisamlog: shell> myisamlog [options] [logfile-name [tbl_name] ...] 常用操作是更新(-u)。如果恢复完成(-r),所有写和可能的更新以及删除操作完成并且只统计错误。如果没有给出日志文件名,使用myisam.log作为日志文件名。如果在命令行中指定了表名,只更新那些指定的表

  • 问题内容: 我需要在运行的Jenkins作业的 控制台输出 中显示日志文件(测试计算机中存在)。 那可能吗?如果是,我该怎么做? 问题答案: 根据需要选择执行Windows批处理命令或执行Shell 然后使用“ cat log.file”(Linux)“ type log.file”(Windows)显示

  • 更新时间 更新内容 2019.04.17 新增/ocr/car_plate 接口 2019.01.24 新增/ocr/business_license 接口 2018.12.05 新增/ocr/driving_license_v2 接口 2018.09.07 新增 /data/check_multi_applications接口 2018.8.24 接口输入示例中添加Python示例 2018.0

  • 问题内容: 我正在尝试解析一些日志文件,因为它们是用Go语言编写的,但是我不确定在不进行检查更改的情况下一次又一次地重新读取该文件的情况下,如何实现这一点。 我希望能够读到EOF,等到下一行写完后再读到EOF,依此类推。感觉有点像。 问题答案: 我已经编写了一个Go程序包github.com/hpcloud/tail来完成此任务。 … 引用kostix的答案: 在现实生活中,文件可能会被截断,替换

  • 项目所有的主要更新都将记录在本文档中。 [Unreleased] 优化拷贝 npm 模块链路 支持 createRef renderProps 支持 支持 forwardRef useImperativeHandle 支持基于 Kbone 的运行时方案 2019-12-19 Added 支持 withRouter Fixed 修复 JSX 参数绑定的问题 Changed 用户在 tabBar.it

  • 升级 使用 pip 升级 MkDocs 到最新版: pip install -U mkdocs 查看当前安装的版本使用 pip freeze: pip freeze | grep mkdocs 0.11.1 (2014-11-20) 修复: Fix a CSS wrapping issue with code highlighting in the ReadTheDocs theme. (