按日期打印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读写Excel文件方法介绍
Nov 22 Python
python实现2048小游戏
Mar 30 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
对Python2与Python3中__bool__方法的差异详解
Nov 01 Python
python实时检测键盘输入函数的示例
Jul 17 Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
Python如何实现FTP功能
May 28 Python
终于搞懂了Keras中multiloss的对应关系介绍
Jun 22 Python
基于Python爬取fofa网页端数据过程解析
Jul 13 Python
python语言实现贪吃蛇游戏
Nov 13 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 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永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
一个javascript图片阅览组件
2010/11/09 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
使用python存储网页上的图片实例
2018/05/22 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
银行出纳岗位职责
2013/11/25 职场文书
迟到检讨书范文
2015/01/27 职场文书
财政局长个人总结
2015/03/04 职场文书
4S店销售内勤岗位职责
2015/04/13 职场文书
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电
MySQL transaction事务安全示例讲解
2022/06/21 MySQL
Python编写车票订购系统 Python实现快递收费系统
2022/08/14 Python