1.__init__.py调整logger添加handler逻辑

2.解决wsgi的http请求日志无法记录到日志文件的问题
This commit is contained in:
azhengzz 2021-05-30 14:55:41 +08:00
parent c5f8d9d8d4
commit f0ebdb6599
3 changed files with 25 additions and 24 deletions

View File

@ -130,37 +130,27 @@ def register_logging(app: Flask):
stream_handler.setFormatter(formater)
file_handler.setLevel(logging.INFO)
file_sys_handler.setLevel(logging.DEBUG)
stream_handler.setLevel(logging.INFO)
stream_handler.setLevel(logging.DEBUG)
# app.logger
app_logger_queue = Queue(-1)
app_logger_queue_handler = QueueHandler(app_logger_queue)
app_logger_queue_listener = QueueListener(app_logger_queue,
file_sys_handler, file_handler, stream_handler,
respect_handler_level=True)
# app.logger.addHandler(file_handler)
# app.logger.addHandler(stream_handler)
for handler in app.logger.handlers:
app.logger.removeHandler(handler)
app.logger.addHandler(app_logger_queue_handler)
app.logger.setLevel(logging.INFO)
app.logger.propagate = False # 记录消息将不会传递给当前记录器的祖先记录器的处理器
app_logger_queue_listener.start()
app.logger.info("WebServer 服务已启动")
# 框架默认logger指定输出handler(包含了http请求日志)
logger = logging.getLogger()
logger_queue = Queue(-1)
logger_queue_handler = QueueHandler(logger_queue)
logger_queue_listener = QueueListener(logger_queue,
file_sys_handler, file_handler, stream_handler,
respect_handler_level=True)
# logger.addHandler(file_sys_handler)
# logger.addHandler(stream_handler)
# logger.addHandler(file_handler)
logger_queue_listener.start()
# app.logger
for handler in app.logger.handlers:
app.logger.removeHandler(handler)
app.logger.addHandler(logger_queue_handler)
app.logger.setLevel(logging.INFO)
app.logger.propagate = False # 记录消息将不会传递给当前记录器的祖先记录器的处理器
app.logger.info("WebServer 服务已启动")
# 框架默认logger指定输出handler(包含了http请求日志、定时任务job日志、socket日志)
logger = logging.getLogger()
logger.addHandler(logger_queue_handler)
logger.setLevel(logging.DEBUG)
logger_queue_listener.start()
def register_template_global(app: Flask):

View File

@ -23,6 +23,7 @@ mail = Mail()
csrf = CSRFProtect()
bootstrap = Bootstrap()
# 支持后台线程发送,并被前端接收到
# async_mode = 'threading'
async_mode = 'eventlet'
if async_mode == 'eventlet':
import eventlet

View File

@ -1,5 +1,7 @@
# coding=utf-8
import logging
from app import create_app
from app.extensions import socketio
@ -8,6 +10,14 @@ from app.extensions import socketio
app = create_app()
if __name__ == '__main__':
socketio.run(app=app, host='0.0.0.0', port=5000, debug=False)
host, port = '0.0.0.0', 5000
debug = False
log_output = True
if socketio.async_mode == 'threading':
socketio.run(app=app, host=host, port=port, debug=debug)
elif socketio.async_mode == 'eventlet':
socketio.run(app=app, host=host, port=port, debug=debug, log_output=log_output, log=logging.getLogger())
elif socketio.async_mode == 'gevent':
socketio.run(app=app, host=host, port=port, debug=debug, log_output=log_output)
# app.run(host='0.0.0.0', port=5000)
# app.run()