我正在使用 Flask Web 框架构建一个带有 Web 界面的 Python 应用程序。 它在调试/开发模式下在 Flask 内部服务器上运行,在生产模式下它作为 wsgi 容器在tornado 上运行。 这就是我设置记录器的方式:
log_formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')
file_handler = logging.handlers.RotatingFileHandler(LOG_FILE, maxBytes=5 * 1024 * 1024, backupCount=10)
file_handler.setFormatter(log_formatter)
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(log_formatter)
log = logging.getLogger('myAppLogger')
log.addHandler(file_handler)
log.addHandler(console_handler)
要将我的记录器添加到 Flask 应用程序,我尝试了以下操作:
app = Flask('system.web.server')
app.logger_name = 'myAppLogger'
但是日志仍然会转到 Flask 默认日志处理程序,此外,我没有找到如何为 Tornado Web 服务器自定义日志处理程序。 任何帮助深表感谢, 提前致谢
最佳答案
据我所知,您无法更改 Flask 中的默认记录器。但是,您可以将处理程序添加到默认记录器:
app = Flask('system.web.server')
app.logger.addHandler(file_handler)
app.logger.addHandler(console_handler)
<小时/>
关于我上面的评论 - “为什么你想在 Tornado 中运行 Flask ...”,请忽略它。如果您没有看到任何性能影响,那么显然没有必要更改您的设置。
但是,如果将来您想迁移到多线程容器,则可以查看 uwsgi
或 gunicorn
。
关于python - 如何在 python Flask-tornado 应用程序中管理多个记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46453726/