按日期打印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中利用Scipy包的SIFT方法进行图片识别的实例教程
Jun 03 Python
python如何在列表、字典中筛选数据
Mar 19 Python
解决python 读取excel时 日期变成数字并加.0的问题
Oct 08 Python
python3中的eval和exec的区别与联系
Oct 10 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
对python中arange()和linspace()的区别说明
May 03 Python
Python通过kerberos安全认证操作kafka方式
Jun 06 Python
Python实现自动整理文件的脚本
Dec 17 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 Python
Python使用华为API为图像设置多个锚点标签
Apr 12 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中读取文件的8种方法和代码实例
2014/08/05 PHP
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
JavaScript识别网页关键字并进行描红的方法
2015/11/09 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
2016/08/01 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
bootstrap表单示例代码分享
2017/05/18 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
python学习之面向对象【入门初级篇】
2017/01/21 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
我的教育故事演讲稿
2014/05/04 职场文书
先进事迹演讲稿
2014/09/01 职场文书
大学生学习计划书
2014/09/15 职场文书
领导干部个人对照检查材料(群众路线)
2014/09/26 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
小学见习报告
2014/10/31 职场文书
元宵节晚会主持词
2015/07/01 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android