管理后台 server 使用蓝图模式,降低维护成本,降低修改功能时对其他模块的影响
This commit is contained in:
75
admin/dashboard/blueprints/system.py
Normal file
75
admin/dashboard/blueprints/system.py
Normal file
@@ -0,0 +1,75 @@
|
||||
from flask import Blueprint, render_template, jsonify, request, send_from_directory
|
||||
from .auth import login_required
|
||||
import logging
|
||||
import os
|
||||
import time
|
||||
from datetime import datetime
|
||||
import platform
|
||||
import psutil
|
||||
from collections import deque
|
||||
|
||||
# 创建系统信息蓝图
|
||||
system_bp = Blueprint('system', __name__)
|
||||
logger = logging.getLogger("SystemBlueprint")
|
||||
|
||||
# 页面路由
|
||||
@system_bp.route('/wx_logs')
|
||||
@login_required
|
||||
def wx_logs():
|
||||
return render_template('wx_logs.html')
|
||||
|
||||
# API路由
|
||||
@system_bp.route('/api/system_info')
|
||||
@login_required
|
||||
def api_system_info():
|
||||
try:
|
||||
# 获取系统信息
|
||||
system_info = {
|
||||
"os": platform.system(),
|
||||
"os_version": platform.version(),
|
||||
"python_version": platform.python_version(),
|
||||
"cpu_usage": psutil.cpu_percent(),
|
||||
"memory_usage": psutil.virtual_memory().percent,
|
||||
"disk_usage": psutil.disk_usage('/').percent,
|
||||
"uptime": time.time() - psutil.boot_time(),
|
||||
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
}
|
||||
|
||||
return jsonify({"success": True, "data": system_info})
|
||||
except Exception as e:
|
||||
logger.error(f"获取系统信息失败: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 500
|
||||
|
||||
@system_bp.route('/api/wx_logs')
|
||||
@login_required
|
||||
def api_wx_logs():
|
||||
try:
|
||||
log_type = request.args.get('type', 'info') # 默认显示info日志
|
||||
lines = request.args.get('lines', 100, type=int) # 默认显示最后100行
|
||||
|
||||
# 确定日志文件路径
|
||||
base_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
if log_type == 'error':
|
||||
log_file = os.path.join(base_dir, 'wx_error.log')
|
||||
else:
|
||||
log_file = os.path.join(base_dir, 'wx_info.log')
|
||||
|
||||
# 读取日志文件
|
||||
log_content = []
|
||||
if os.path.exists(log_file):
|
||||
with open(log_file, 'r', encoding='utf-8', errors='ignore') as f:
|
||||
# 使用deque获取最后N行
|
||||
log_content = list(deque(f, lines))
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"data": {
|
||||
"log_type": log_type,
|
||||
"log_file": log_file,
|
||||
"content": log_content,
|
||||
"lines": len(log_content)
|
||||
}
|
||||
})
|
||||
except Exception as e:
|
||||
logger.error(f"获取微信日志失败: {e}")
|
||||
return jsonify({"success": False, "error": str(e)}), 500
|
||||
Reference in New Issue
Block a user