python - 如何在 python Flask-tornado 应用程序中管理多个记录器

标签 python logging flask tornado

我正在使用 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 ...”,请忽略它。如果您没有看到任何性能影响,那么显然没有必要更改您的设置。

但是,如果将来您想迁移到多线程容器,则可以查看 uwsgigunicorn

关于python - 如何在 python Flask-tornado 应用程序中管理多个记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46453726/

相关文章:

python - 在 tensorflow 中使用自定义操作构建图

javascript - 如何使用 javascript 对 for 循环 jinja 模板字段执行计算

flask - 设置多对多sqlalchemy flask app sqlite db的插入顺序

python - 我们如何为 pandas 数据框的列标题和行标题着色?

python - 窗口中的 Blender 2.6 控制台

python - E731 不分配 lambda 表达式,使用 def

c# - 如何使用 log4net 进行 TDD?

java - log4j2 中异步记录器的行为

java - 为 Java Logger 优化磁盘写入

python - 如何从列表字段访问属性