日志

    如果您没有配置日志, Python 的默认日志级别一般是“ warning ”。低于配置 的日志级别的日志是不可见的。

    当想要为项目配置日志时,应当在程序启动时尽早进行配置。如果晚了,那么 app.logger 就会成为缺省记录器。如果有可能 的话,应当在创建应用对象之前配置日志。

    这个例子使用 来创建一个类似于 Flask 缺省配置的日志记录配置:

    1. dictConfig({
    2. 'version': 1,
    3. 'formatters': {'default': {
    4. 'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
    5. }},
    6. 'class': 'logging.StreamHandler',
    7. 'stream': 'ext://flask.logging.wsgi_errors_stream',
    8. 'formatter': 'default'
    9. }},
    10. 'root': {
    11. 'level': 'INFO',
    12. }
    13. })
    14. app = Flask(__name__)

    如果在操作 app.logger 之后配置日志,并且需要 移除缺省的日志记录器,可以导入并移除它:

    当产品运行在一个远程服务器上时,可能不会经常查看日志信息。 WSGI 服务器可能 会在一个文件中记录日志消息,而你只会在当用户告诉你出错的时候才会查看日志文 件。

    为了主动发现并修复错误,可以配置一个 ,用于在一般错误或者更高级别错误发生 时发送一封电子邮件:

    1. import logging
    2. from logging.handlers import SMTPHandler
    3. mail_handler = SMTPHandler(
    4. fromaddr='server-error@example.com',
    5. toaddrs=['admin@example.com'],
    6. subject='Application Error'
    7. mail_handler.setLevel(logging.ERROR)
    8. mail_handler.setFormatter(logging.Formatter(
    9. '[%(asctime)s] %(levelname)s in %(module)s: %(message)s'
    10. ))
    11. if not app.debug:
    12. app.logger.addHandler(mail_handler)

    看到更多请求信息,如 IP 地址,有助调试某些错误。可以继承 logging.Formatter 来注入自己的内容,以显示在日志消息中。然后,可 以修改 Flask 缺省的日志记录器、上文所述的电子邮件日志记录器或者其他日志记 录器的格式器。:

    其他库可能也会产生大量日志,而你也正好需要查看这些日志。最简单的方法是向根 记录器中添加记录器。:

    1. from flask.logging import default_handler
    2. root = logging.getLogger()
    3. root.addHandler(default_handler)

    单独配置每个记录器更好还是只配置一个根记录器更好,取决你的项目。:

    根据情况不同,一个扩展可能会选择记录到 或者其自己的日志记录器。具体请查阅 扩展的文档。