按日期打印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实现根据图标提取分类应用程序实例
Sep 28 Python
Python 递归函数详解及实例
Dec 27 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
11个Python3字典内置方法大全与示例汇总
May 13 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
python可视化text()函数使用详解
Feb 11 Python
关于python中的xpath解析定位
Mar 06 Python
python 爬取B站原视频的实例代码
Sep 09 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
Python多个MP4合成视频的实现方法
Jul 16 Python
使用python创建股票的时间序列可视化分析
Mar 03 Python
分享python函数常见关键字
Apr 26 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 json_encode值中大括号与花括号区别
2013/09/30 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
php如何比较两个浮点数是否相等详解
2019/02/12 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
javascript String 对象
2008/04/25 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
js获取域名的方法
2015/01/27 Javascript
45个JavaScript编程注意事项、技巧大全
2015/02/11 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
使用JS中的exec()方法构造正则表达式验证
2016/08/01 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
python根据距离和时长计算配速示例
2014/02/16 Python
详解Python中的__init__和__new__
2014/03/12 Python
Python中防止sql注入的方法详解
2017/02/25 Python
python 实现敏感词过滤的方法
2019/01/21 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
介绍一下#error预处理
2015/09/25 面试题
汽车工程专业应届生求职信
2013/10/19 职场文书
物理教师自荐信范文
2013/12/28 职场文书
班级安全教育实施方案
2014/02/23 职场文书
前处理班长职位说明书
2014/03/01 职场文书
美食节目策划方案
2014/05/31 职场文书
项目委托协议书(最新)
2014/09/13 职场文书
基层党员对照检查材料
2014/09/24 职场文书
运动会开幕词
2015/01/28 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
vue中控制mock在开发环境使用,在生产环境禁用方式
2022/04/06 Vue.js
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技