按日期打印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将html转成PDF的实现代码(包含中文)
Mar 04 Python
Python中的__slots__示例详解
Jul 06 Python
解决Python安装后pip不能用的问题
Jun 12 Python
面向初学者的Python编辑器Mu
Oct 08 Python
Python常见数字运算操作实例小结
Mar 22 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
python实现猜拳游戏
Mar 04 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
Python图片检索之以图搜图
May 31 Python
Python连续赋值需要注意的一些问题
Jun 03 Python
python​格式化字符串
Apr 20 Python
virtualenv隔离Python环境的问题解析
Jun 21 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面向对象全攻略 (二) 实例化对象 使用对象成员
2009/09/30 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
php中关于换行的实例写法
2019/09/26 PHP
学习JavaScript的最佳方法分享
2011/10/21 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
浅谈js数据类型判断与数组判断
2016/08/29 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
微信小程序实现点击图片旋转180度并且弹出下拉列表
2018/11/27 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
原生js实现日历效果
2020/03/02 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
Python 爬虫图片简单实现
2017/06/01 Python
详解Python3 基本数据类型
2019/04/19 Python
深入解析神经网络从原理到实现
2019/07/26 Python
python批量修改ssh密码的实现
2019/08/08 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
作文批改评语大全
2014/04/23 职场文书
学校安全责任书范本
2014/07/23 职场文书
付款委托书范本
2014/10/05 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
Python Pandas知识点之缺失值处理详解
2021/05/11 Python
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS