feat(request): 请求信息

test
jshixiong 1 year ago
parent b0af585ae7
commit c70654ebc1

2
.gitignore vendored

@ -167,3 +167,5 @@ cython_debug/
log/ log/
logs/ logs/
out/ out/
test/

@ -1,10 +1,37 @@
from flask import Flask from flask import Flask, request
from datetime import datetime
import os
import json
from .route.route import route_bp
def create_app(): def create_app():
app = Flask(__name__) app = Flask(__name__)
from .route.route import route_bp
app.register_blueprint(route_bp) app.register_blueprint(route_bp)
log_file_path = '/data/ww/py_sys_monitor/logs/access_log'
def log_request_response(response):
log_entry = {
'time': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'endpoint': request.endpoint,
'method': request.method,
'url': request.url,
'remote_addr': request.remote_addr,
'request_args': request.args.to_dict(),
'request_form': request.form.to_dict(),
'request_json': request.get_json(),
'response_status': response.status,
'response_data': response.get_json()
}
os.makedirs(os.path.dirname(log_file_path), exist_ok=True)
with open(log_file_path, 'a') as log_file:
log_file.write(json.dumps(log_entry) + "\n")
return response
app.after_request(log_request_response)
return app return app

@ -1,6 +1,4 @@
import os
import json import json
from flask import request
login_file_path = '/data/ww/py_sys_monitor/login_info' login_file_path = '/data/ww/py_sys_monitor/login_info'

@ -19,7 +19,9 @@ def ensure_log_file_exists():
ensure_log_file_exists() ensure_log_file_exists()
def convert_to_mbps(bytes_per_second): def convert_to_mbps(bytes_per_second):
return bytes_per_second * 8 / (1024 * 1024) # Convert to Megabits per second (Mbps) # Convert to Megabits per second (Mbps) 保留3位小数
# 做演示将数据乘以10
return round(bytes_per_second * 10 * 8 / (1024 * 1024), 3)
def log_network_speed(): def log_network_speed():
while True: while True:

@ -0,0 +1,27 @@
import os
import json
from flask import request
log_file_path = '/data/ww/py_sys_monitor/access_log'
def get_request_info(page_index=1, page_size=10):
if page_index <= 0:
page_index = 1
if page_size <=0 | page_size > 20:
page_size = 10
request_info = []
with open(log_file_path, 'r') as f:
lines = f.readlines()
total_records = len(lines)
start = (page_index - 1) * page_size
end = start + page_size
if start < total_records:
for line in lines[start:end]:
record = json.loads(line.strip())
request_info.append(record)
return {"request_info": request_info, "total": total_records}

@ -4,6 +4,7 @@ import app.io_usage as io_usage
import app.memory_usage as memory_usage import app.memory_usage as memory_usage
import app.network as network_usage import app.network as network_usage
import app.login_info as login_info import app.login_info as login_info
import app.request_info as request_info
route_bp = Blueprint('route', __name__) route_bp = Blueprint('route', __name__)
@ -26,10 +27,18 @@ def get_network():
# 最近登录信息
@route_bp.route('/sys/login_info', methods=['GET']) @route_bp.route('/sys/login_info', methods=['GET'])
def get_login_info(): def get_login_info():
page_index = int(request.args.get('page_index', 1)) page_index = int(request.args.get('page_index', 1))
page_size = int(request.args.get('page_size', 10)) page_size = int(request.args.get('page_size', 10))
data = login_info.get_recent_login_info(page_index, page_size) data = login_info.get_recent_login_info(page_index, page_size)
return jsonify(data) return jsonify(data)
# 请求信息
@route_bp.route('/request_info', methods=['GET'])
def get_request_info():
page_index = int(request.args.get('page_index', 1))
page_size = int(request.args.get('page_size', 10))
data = request_info.get_request_info(page_index, page_size)
return jsonify(data)
Loading…
Cancel
Save