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


Posted in Python onMay 02, 2015

网站流量上来后,日志按天甚至小时存储更方便查看和管理,而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 相关文章推荐
python中ConfigParse模块的用法
Sep 29 Python
Python正则抓取新闻标题和链接的方法示例
Apr 24 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
Python实现二维数组输出为图片
Apr 03 Python
Python中return self的用法详解
Jul 27 Python
python 提取key 为中文的json 串方法
Dec 31 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
Sep 15 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
Python类super()及私有属性原理解析
Jun 15 Python
Python实现敏感词过滤的4种方法
Sep 12 Python
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
May 31 Python
详细解读Python的web.py框架下的application.py模块
May 02 #Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 #Python
在ironpython中利用装饰器执行SQL操作的例子
May 02 #Python
用Python编写简单的定时器的方法
May 02 #Python
用Python程序抓取网页的HTML信息的一个小实例
May 02 #Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
May 02 #Python
在Python的Django框架中用流响应生成CSV文件的教程
May 02 #Python
You might like
php判断GIF图片是否为动画的方法
2020/09/04 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
php生成shtml类用法实例
2014/12/09 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
js面向对象编程之如何实现方法重载
2014/07/02 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
python通过socket查询whois的方法
2015/07/18 Python
python安装与使用redis的方法
2016/04/19 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
python中sys.argv函数精简概括
2018/07/08 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
Python调用C/C++的方法解析
2020/08/05 Python
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
应届生会计求职信
2013/11/11 职场文书
客服工作职责
2013/12/11 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
重阳节活动总结
2014/08/27 职场文书
党代会心得体会
2014/09/04 职场文书
入党转正申请书范文
2019/05/20 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers