按日期打印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实现根据指定端口探测服务器/模块部署的方法
Aug 25 Python
在Python的Django框架中调用方法和处理无效变量
Jul 15 Python
Python 正则表达式的高级用法
Dec 04 Python
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
numpy返回array中元素的index方法
Jun 27 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
Oct 21 Python
Python实现去除列表中重复元素的方法总结【7种方法】
Feb 16 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 Python
python区块及区块链的开发详解
Jul 03 Python
python使用matplotlib绘制折线图的示例代码
Sep 22 Python
Python极值整数的边界探讨分析
Sep 15 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
19个超实用的PHP代码片段
2014/03/14 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
php实现将Session写入数据库
2015/07/26 PHP
php将远程图片保存到本地服务器的实现代码
2015/08/03 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
ExtJS4 组件化编程,动态加载,面向对象,Direct
2011/05/12 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
浅析node.js中close事件
2014/11/26 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
Element Badge标记的使用方法
2020/07/27 Javascript
tensorflow获取变量维度信息
2018/03/10 Python
简单谈谈Python的pycurl模块
2018/04/07 Python
python实现反转部分单向链表
2018/09/27 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
Python 根据日志级别打印不同颜色的日志的方法示例
2019/08/08 Python
简单了解python中的与或非运算
2019/09/18 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
浅析Python中字符串的intern机制
2020/10/03 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
蔻驰意大利官网:COACH意大利
2019/01/16 全球购物
俄语专业毕业生推荐信
2013/10/28 职场文书
大学运动会通讯稿
2014/01/28 职场文书
股权转让协议书
2014/04/12 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
追悼会答谢词范文
2015/09/29 职场文书
合作协议书格式范本
2016/03/21 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL
Python列表的索引与切片
2022/04/07 Python