按日期打印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中pass语句用法实例分析
Apr 30 Python
人工智能最火编程语言 Python大战Java!
Nov 13 Python
Python学习_几种存取xls/xlsx文件的方法总结
May 03 Python
对python调用RPC接口的实例详解
Jan 03 Python
Python os.access()用法实例
Feb 18 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
Keras在训练期间可视化训练误差和测试误差实例
Jun 16 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
python 绘制正态曲线的示例
Sep 24 Python
Pandas中DataFrame交换列顺序的方法实现
Dec 14 Python
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Jun 03 Python
教你使用一行Python代码玩遍童年的小游戏
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 使用file_get_contents读取大文件的方法
2014/11/13 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
做网页的一些技巧(续)
2007/02/01 Javascript
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
jQuery操作动画完整实例分析
2020/01/10 jQuery
js实现无缝轮播图特效
2020/05/09 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
Python字符串中查找子串小技巧
2015/04/10 Python
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
用pycharm开发django项目示例代码
2019/06/13 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
美国家具网站:Cymax
2016/09/17 全球购物
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
介绍下java.util.Arrays类
2012/10/16 面试题
销售总监工作职责
2013/11/21 职场文书
开业主持词
2014/03/21 职场文书
大学生就业策划书范文
2014/04/04 职场文书
房屋继承公证书
2014/04/10 职场文书
2014年敬老院工作总结
2014/12/08 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
MySQL非空约束(not null)案例讲解
2021/08/23 MySQL