网站流量上来后,日志按天甚至小时存储更方便查看和管理,而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
 
