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

yipeiwu_com6年前Python基础

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

  •     如果你想按别的时间维度分割日志,修改when参数对应的值就可以了。
  •     特别注意:当when的值是D,表示由服务器启动的时间计起,每过24小时归档一次;而如果你和我一样,希望在每天的凌晨归档日志的话,可以配置为midnight。
  • Centos系统可能需要先安装python-yaml:sudo yum install python-yaml

相关文章

在Python中使用AOP实现Redis缓存示例

越来越觉得的缓存是计算机科学里最NB的发明(没有之一),本文就来介绍了一下在Python中使用AOP实现Redis缓存示例,小伙伴们一起来了解一下 import redis ena...

python字符串和常用数据结构知识总结

python字符串和常用数据结构知识总结

使用字符串 第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代,计算机处理的信息主要是数值,而世界上的第一台电子计...

Python通过调用有道翻译api实现翻译功能示例

本文实例讲述了Python通过调用有道翻译api实现翻译功能。分享给大家供大家参考,具体如下: 通过调用有道翻译的api,实现中译英、其他语言译中文 Python代码: # codi...

Python制作CSDN免积分下载器

Python制作CSDN免积分下载器

CSDN免积分下载 你懂的。 1、输入资源地址如:http://download.csdn.net/download/gengqkun/4127808 2、输入验证码 3、点击下载,会...

python搭建虚拟环境的步骤详解

前言 相信对于python开发人员来说,机器上有不同的python版本是很正常的,因为开发的项目有的用2.6或2.7,有的就要用3.0+版本,如何把这些不同的版本管理好,保持每个环境的干...