您的位置 首页 > 数码极客

如何获取web日志—怎么获取web网站日志数据

在日常工作中,我们以往登录到服务器部署安装环境时,所操作的命令都是实时打印过程信息或者查看应用日志实时输出日志的时候我们也可以用tailf命令实时显示,

但是当我们把这些工作web平台化之后,怎么使用实时查看日志呢,我使用过以下两种方法实现:

1. 前端网页使用ajax定时向服务器请求获取日志信息返回。是不是有点low,但功能还是实现了。

2. 前端网页使用websocket建立连接,实时从服务器接收日志。

目前使用第二种方法通过使用Flask来实现。


以下简单演示实现过程,从服务器中实时显示日志,可根据实际情况进行修改。

配图,代码参考往下内容

1.测试环境python3 使用pip安装以下库

Flask==1.1.2

gevent==20.9.0

gevent-websocket==0.10.1

2.服务端代码

import os import time import logging from gevent import monkey monkey.patch_all() from gevent.pywsgi import WSGIServer from geven import WebSocketHandler from geven import WebSocketError from flask import Flask, request, render_template from multiprocessing import cpu_count, Process app = Flask(__name__) def tailf(filename, websocket): """打开文件并把读取内容发给websocket""" with open(filename) as f: # 输出已经存在的文件内容 web(''.join())) # 移动到了文件EOF处 f.seek(0, 2) while True: line = f.readline() if line: web(line) else: (1) @a('/tailf/') def tailf_log(): websocket = reque['w;] # 演示功能这里写死,实际使用可自定义 filename = '/data/ops/20201117; if os.(filename): try: tailf(filename, websocket) except WebSocketError as e: logging.info('error {} websocket closed!'.format(e)) web() return 'ok' else: web('<h3>查看的文件不存在!</h3>') @a('/') def index(): return render_template('index.html') # 日志配置 logging.basicConfig( filename='logs.log', format='%(asctime)s %(levelname)s: %(message)s', level='INFO') # 实例化 这里包括监听端口 ws_server = WSGIServer( ('0.0.0.0', 5000), app, log=logging, handler_class=WebSocketHandler, ) w() def serve_forever(): try: w_accepting() w() except KeyboardInterrupt: w() if __name__ == "__main__": # 用multiprocessing配合gevent来启动多进程 for i in range(cpu_count()): p = Process(target=serve_forever) p.start()

3.前端代码(需要引入jquery.min.js)

<!doctype html> <html lang="en"> <head> <title>实时日志查看</title> <!-- jQuery 3 --> <script src="{{ url_for('static', filename='jquery/di;) }}"></script> </head> <body> <div class="container"> <div id="log_id" style="height: 95vh; overflow-y: scroll;padding: 10px;"> <pre></pre> </div> </div> <script> var ws_scheme = window.loca === "https:" ? "wss" : "ws"; var socket = new WebSocket(ws_scheme + '://' + "192.168.209.222:5000/tailf/"); var log_id = $("#log_id"); var log_pre_id = $("#log_id pre"); = function () { = function (msg) { log_); // 滚动条滚动到最低部 log_id.scrollTo() - log_id.height()); }; }; = function () { log_ = '<h3>连接websocket失败!</h3>'; }; window.onbeforeunload = function (event) { con("关闭WebSocket连接!"); (); } </script> </body> </html>

4.运行代码进行测试

在服务器上模拟定时输出信息到日志文件

for i in $(seq 1 1000);do echo -e "$i ----------------" >> /data/ops/20201117;sleep 1;done

在浏览器打开网页实时查看


PS: 我比较好奇在头条发这一类文章有没有流量的,毕竟在这里的大部分以手机端娱乐为主[红脸]

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何获取web日志,怎么获取web网站日志数据,如何查看web日志,如何获取系统日志”边界阅读