按日期打印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编码最佳实践之总结
Feb 14 Python
在windows下快速搭建web.py开发框架方法
Apr 22 Python
关于python的bottle框架跨域请求报错问题的处理方法
Mar 19 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
Python+Django搭建自己的blog网站
Mar 13 Python
使用python编写监听端
Apr 12 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
Python lambda表达式用法实例分析
Dec 25 Python
python logging日志模块原理及操作解析
Oct 12 Python
Python pip配置国内源的方法
Feb 14 Python
python读写数据读写csv文件(pandas用法)
Dec 14 Python
PyQt 如何创建自定义QWidget
Mar 24 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的面试题集,附我的答案和分析(一)
2006/11/19 PHP
高性能PHP框架Symfony2经典入门教程
2014/07/08 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
IE8 原生JSON支持
2009/04/13 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
关于HTTP传输中gzip压缩的秘密探索分析
2018/01/12 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
Angular resolve基础用法详解
2018/10/03 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
使用Kivy将python程序打包为apk文件
2017/07/29 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
django创建超级用户过程解析
2019/09/18 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
情人节活动策划方案
2014/02/27 职场文书
网络工程专业自荐信范文
2014/03/16 职场文书
收款委托书范本
2014/09/11 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
篮球赛新闻稿
2015/07/17 职场文书
家长会感言
2015/08/01 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
Nginx 安装SSL证书完成HTTPS部署
2022/04/28 Servers
Docker安装MySql8并远程访问的实现
2022/07/07 Servers