关闭

[python] tornado.log将输出定向到stdout

标签: python框架tornadologlogging
1005人阅读 评论(0) 收藏 举报
分类:

使用 tornado (python 的一个 web 框架)的自带log时遇到一个问题,即tornado.log.logging.info时,默认是将info(或者debug, error等Level)信息打印到stderr而非stdout,这样会与其它真正的error信息混杂在一起,特别当后台日志输出频繁时,给问题排查带来麻烦。

经过查看tornado源码(Linux x86_64 python2.7, 路径 /usr/lib64/python2.7/site-packages/tornado/log.py),发现其内部亦是直接使用python自带logging模块(import logging),因此tornado.log.logging即python的logging. 找到其中logger的StreamHandler, 查看python 的官方文档,可看到其中说明:


所以直接将 /usr/lib64/python2.7/site-packages/tornado/log.py 源码里的 channel = logging.StreamHandler() 改成 channel = logging.StreamHandler(sys.__stdout__),就可以将我们自己手动打印的后台信息输出到stdout,这样当开启daemon参数运行程序时,就可以将stdout重定向到文件,将我们自己的log信息与其它真正的error信息区分开来,不再会搅在一起,目的达到了。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5716次
    • 积分:117
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论