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
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
|