You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
2.0 KiB

from flask import Flask, request
from flask_cors import CORS
from datetime import datetime
import os
import json
import logging
from .route.route import route_bp
def create_app():
app = Flask(__name__)
# CORS(app, supports_credentials=True)
CORS(app, resources={r"/*": {"origins": "*"}}, supports_credentials=True)
# CORS(app, resources={r"/*": {"origins": "*", "methods": "GET,POST,PUT,DELETE,OPTIONS"}}) # 允许所有源访问所有端点
# CORS(app, resources={r"/*": {"origins": ["http://111.8.143.97", "http://113.246.243.98"]}}, supports_credentials=True)
app.register_blueprint(route_bp)
# 创建日志文件夹
if not os.path.exists('/data/ww/py_sys_monitor/logs'):
os.makedirs('/data/ww/py_sys_monitor/logs')
# 配置日志记录
logging.basicConfig(
filename='/data/ww/py_sys_monitor/logs/all.log',
level=logging.INFO,
format='%(asctime)s %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
log_file_path = '/data/ww/py_sys_monitor/info/access_log'
def log_request_response(response):
response_data = response.get_json(silent=True)
if "route.get_resource" == request.endpoint:
return response
elif "route.get_request_info" == request.endpoint:
response_data = {}
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_json': {"args": request.args.to_dict(),"form": request.form.to_dict(),"json": request.get_json(silent=True)},
'response_status': response.status,
'response_data': response_data
}
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