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

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