Skip to content

Commit 5e58bcb

Browse files
committed
feat: 新增系统日志功能
1 parent 337c8b1 commit 5e58bcb

2 files changed

Lines changed: 52 additions & 1 deletion

File tree

app/app.py

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
:copyright: © 2019 by the Lin team.
33
:license: MIT, see LICENSE for more details.
44
"""
5+
import json
6+
import time
57

6-
from flask import Flask
8+
from flask import Flask, request, g
79
from flask_cors import CORS
810
from lin import Lin
911

@@ -25,14 +27,52 @@ def create_tables(app):
2527
db.create_all()
2628

2729

30+
def register_before_request(app):
31+
@app.before_request
32+
def request_cost_time():
33+
g.request_start_time = time.time()
34+
g.request_time = lambda: "%.5f" % (time.time() - g.request_start_time)
35+
36+
37+
def register_after_request(app):
38+
@app.after_request
39+
def log_response(resp):
40+
log_config = app.config.get('LOG')
41+
if not log_config['REQUEST_LOG']:
42+
return resp
43+
message = '[%s]->[%s] from:%s costs:%.3f ms' % (
44+
request.method,
45+
request.path,
46+
request.remote_addr,
47+
float(g.request_time()) * 1000
48+
)
49+
if log_config['LEVEL'] == 'INFO':
50+
app.logger.info(message)
51+
elif log_config['LEVEL'] == 'DEBUG':
52+
req_body = '{}'
53+
try:
54+
req_body = request.get_json()
55+
except:
56+
pass
57+
message += ' data:{param:%s, body:%s} ' % (
58+
json.dumps(request.args, ensure_ascii=False),
59+
req_body
60+
)
61+
app.logger.debug(message)
62+
return resp
63+
64+
2865
def create_app(register_all=True):
2966
app = Flask(__name__, static_folder='./assets')
3067
app.config.from_object('app.config.setting')
3168
app.config.from_object('app.config.secure')
69+
app.config.from_object('app.config.log')
3270
if register_all:
3371
register_blueprints(app)
3472
Lin(app)
3573
apply_cors(app)
3674
# 创建所有表格
3775
create_tables(app)
76+
register_before_request(app)
77+
register_after_request(app)
3878
return app

app/config/log.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"""
2+
:copyright: © 2019 by the Lin team.
3+
:license: MIT, see LICENSE for more details.
4+
"""
5+
6+
LOG = {
7+
'LEVEL': 'DEBUG',
8+
'DIR': 'logs',
9+
'SIZE_LIMIT': 1024 * 1024 * 5,
10+
'REQUEST_LOG': True
11+
}

0 commit comments

Comments
 (0)