按日期打印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基础教程之分支、循环简单用法
Jun 16 Python
Python解决N阶台阶走法问题的方法分析
Dec 28 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
python同步两个文件夹下的内容
Aug 29 Python
线程安全及Python中的GIL原理分析
Oct 29 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
基于Tensorflow高阶读写教程
Feb 10 Python
Keras使用tensorboard显示训练过程的实例
Feb 15 Python
python 实现图像快速替换某种颜色
Jun 04 Python
python怎么判断模块安装完成
Jun 19 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 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/10/28 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
在NodeJs中使用node-schedule增加定时器任务的方法
2020/06/08 NodeJs
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
实例Python处理XML文件的方法
2015/08/31 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
python reduce 函数使用详解
2017/12/05 Python
详细解读tornado协程(coroutine)原理
2018/01/15 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
Linux机考试题
2015/10/16 面试题
软件测试面试题
2014/01/05 面试题
学校安全责任书
2014/04/14 职场文书
四风查摆剖析材料
2014/10/10 职场文书
董事长助理岗位职责
2015/02/11 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js