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.
50 lines
1.4 KiB
50 lines
1.4 KiB
from flask import Flask, request
|
|
from datetime import datetime
|
|
import os
|
|
import json
|
|
import logging
|
|
from .route.route import route_bp
|
|
|
|
|
|
def create_app():
|
|
app = Flask(__name__)
|
|
|
|
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):
|
|
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 |