按日期打印Python的Tornado框架中的日志的方法

534次阅读  |  发布于5年以前

网站流量上来后,日志按天甚至小时存储更方便查看和管理,而Python的logging模块也提供了TimedRotatingFileHandler来支持以不同的时间维度归档日志。
然而根据Logging HOWTO的官方指南设置后,却发现新的日志只剩下root的,Tornado内部的logger全部没有生效。
参考stackoverflow上的一个回答,我发现下面的配置能让Tornado内部的logger也用上TimedRotatingFileHandler:


    # logging.yaml

    version: 1
    disable_existing_loggers: false
    formatters:
     simple:
      format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'

    loggers:
     all:
      handlers: [all]
      propagate: false
     tornado:
      handlers: [all]
      propagate: false

    handlers:
     console:
      class: logging.StreamHandler
      level: INFO
      formatter: simple
      stream: ext://sys.stdout
     all:
      class: logging.handlers.TimedRotatingFileHandler
      level: INFO
      formatter: simple
      when: midnight
      filename: ./logs/server.log

    root:
     level: INFO
     handlers: [console, all]
     propagate: true

只需在Tornado的入口代码处调用:


    logging.config.dictConfig(yaml.load(open('logging.yaml', 'r')))

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8