python - flask.logger 比更通用的 python 日志记录模块有什么优势?

标签 python logging flask

我正在使用 Flask 构建一个网站,我现在正在向它添加一些我找到的日志记录 these docs .基本示例如下:

if not app.debug:
    import logging
    from themodule import TheHandlerYouWant
    file_handler = TheHandlerYouWant(...)
    file_handler.setLevel(logging.WARNING)
    app.logger.addHandler(file_handler)

之后您可以使用 app.logger.error('An error occurred') 进行记录。这工作正常,但除了我没有看到比常规 python 日志记录模块有任何优势的事实之外,我还看到了一个主要的缺点:如果我想在请求上下文之外记录(例如,当使用 cron 作业运行一些代码时) 我收到错误是因为我在请求上下文之外使用应用程序。

所以我的主要问题是;我为什么要使用 Flask 记录器? build 它的原因是什么?

最佳答案

Flask 记录器使用“通用”Python 日志记录,它是一个 logging.getLogger(name) 和其他任何一样。

记录器的存在是为了让 Flask 应用程序和 View 可以记录执行期间发生的事情。例如,它将在 Debug模式下记录 500 错误的回溯。配置示例显示了如何在不处于 Debug模式时启用这些日志,这些日志在生产中仍然有用。

拥有内部记录器并不是 Flask 独有的,它是在 Python 中使用日志记录的标准方式。每个模块都定义了它自己的记录器,但日志记录的配置仅由链中的最后一个环节处理:您的项目。

您也可以为自己的消息使用 app.logger,但这不是必需的。您还可以为自己的消息创建一个单独的记录器。最后,都是 Python 日志记录。

关于python - flask.logger 比更通用的 python 日志记录模块有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33416107/

相关文章:

python - 如何禁止两个相互冲突的选项

python - 带有递归 XInclude 语句的 XML

java - 使用 Log4J 1.*,如何将两个包写入两个单独的文件?

Python3 Flask - 缺少 1 个必需的位置参数 : 'self'

使用 jsonify 的 python flask 响应

python - Flask 和 Flask-Login 的新功能 - ImportError : No module named login

python - LassoCV 中 eps 和 tol 的作用是什么

python - pypi中找不到包

logging - 使用代码中的 XML 配置 log4net 或 NLog

c# - Winforms 日志框架