【问题标题】:Flask - how to write werkzeug logs to log file using RotatingFileHandler?Flask - 如何使用 RotatingFileHandler 将 werkzeug 日志写入日志文件?
【发布时间】:2017-03-14 21:54:26
【问题描述】:

我发现了一些有点相似的问题,但没有直接解决这个问题。

我正在尝试将所有 Werkzeug 日志记录输出到日志文件。我可以将部分日志记录输出到文件,但我似乎无法捕获任何错误或超出基本路由/请求行的任何内容。

这就是我所拥有的。如何包含 Werkzeug 的所有输出?

if __name__ == '__main__':
    configure_app(app)
    handler=RotatingFileHandler('server_werkzeug.log', maxBytes=10000000, backupCount=5)
    log = logging.getLogger('werkzeug')
    log.setLevel(logging.DEBUG)
    log.addHandler(handler)

【问题讨论】:

    标签: python logging flask werkzeug


    【解决方案1】:

    此代码非常适合记录日志。至于不记录错误的问题,除了“werkzeug”之外,您还必须指定其他记录器。对于 Flask 中的回溯错误,您正在寻找 app.logger。并且不要忘记将级别设置为警告。

    import logging
    import logging.handlers
    
    app = Flask(__name__)
    
    handler = logging.handlers.RotatingFileHandler(
            'log.txt',
            maxBytes=1024 * 1024)
    logging.getLogger('werkzeug').setLevel(logging.DEBUG)
    logging.getLogger('werkzeug').addHandler(handler)
    app.logger.setLevel(logging.WARNING)
    app.logger.addHandler(handler)
    

    如果您的应用使用一些第三方工具进行数据库查询、cron 作业等,您也可以添加其他记录器。

    logging.getLogger('apscheduler.scheduler').setLevel(logging.DEBUG)
    logging.getLogger('apscheduler.scheduler').addHandler(handler)
    

    记录器的名称可以在终端窗口中找到:

    INFO:werkzeug:127.0.0.1 - - [10/Mar/2018 15:41:15] "GET /file.js HTTP/1.1" 200 -
    DEBUG:apscheduler.scheduler:Next wakeup is due at 2018-03-10 16:00:00+03:00 (in 1124.668881 seconds)
    

    【讨论】:

      【解决方案2】:

      使用dictConfig 是一种更可扩展的方式。

      from logging.config import dictConfig
      
      dictConfig({
          'version': 1,
          'handlers': {
              'file.handler': {
                  'class': 'logging.handlers.RotatingFileHandler',
                  'filename': 'server_werkzeug.log',
                  'maxBytes': 10000000,
                  'backupCount': 5,
                  'level': 'DEBUG',
              },
          },
          'loggers': {
              'werkzeug': {
                  'level': 'DEBUG',
                  'handlers': ['file.handler'],
              },
          },
      })
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-17
        • 2017-09-25
        • 2023-03-31
        • 1970-01-01
        • 2013-11-26
        • 1970-01-01
        • 2012-04-06
        相关资源
        最近更新 更多