diff --git a/.gitignore b/.gitignore index 30b25ff..bb2685e 100644 --- a/.gitignore +++ b/.gitignore @@ -166,4 +166,6 @@ cython_debug/ # log log/ logs/ -out/ \ No newline at end of file +out/ + +test/ \ No newline at end of file diff --git a/app/__init__.py b/app/__init__.py index 56dbb93..a46d1d1 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -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(): app = Flask(__name__) - from .route.route import 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 \ No newline at end of file diff --git a/app/login_info.py b/app/login_info.py index a78e21a..ab2dc87 100644 --- a/app/login_info.py +++ b/app/login_info.py @@ -1,6 +1,4 @@ -import os import json -from flask import request login_file_path = '/data/ww/py_sys_monitor/login_info' diff --git a/app/network.py b/app/network.py index 31803df..671f644 100644 --- a/app/network.py +++ b/app/network.py @@ -19,7 +19,9 @@ def ensure_log_file_exists(): ensure_log_file_exists() 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(): while True: diff --git a/app/request_info.py b/app/request_info.py new file mode 100644 index 0000000..d6be668 --- /dev/null +++ b/app/request_info.py @@ -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} \ No newline at end of file diff --git a/app/route/route.py b/app/route/route.py index 6df5169..6652e52 100644 --- a/app/route/route.py +++ b/app/route/route.py @@ -4,6 +4,7 @@ import app.io_usage as io_usage import app.memory_usage as memory_usage import app.network as network_usage import app.login_info as login_info +import app.request_info as request_info route_bp = Blueprint('route', __name__) @@ -26,10 +27,18 @@ def get_network(): - +# 最近登录信息 @route_bp.route('/sys/login_info', methods=['GET']) def get_login_info(): page_index = int(request.args.get('page_index', 1)) page_size = int(request.args.get('page_size', 10)) data = login_info.get_recent_login_info(page_index, page_size) 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) \ No newline at end of file