加载中…
个人资料
麦兜搞IT
麦兜搞IT
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,533,161
  • 关注人气:531
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

Twisted自带的日志系统log

(2011-11-17 15:46:38)
标签:

python

twisted

log

it

分类: Python

Twisted提供了一个简单而且可移植的日志系统叫做 twisted.python.log 。其中的3个函数:

msg

记录一条信息,例如:

from twisted.python import log
log.msg("hello, world")

err

把错误写入日志,包括traceback信息。你可以传递一个 failure 或者异常的实例,甚至什么都没有。如果传递其他的东西则会通过 repr() 函数获得字符串来显示。如果什么都不传递则会自动构造一个 Failure 实例,一般用于 except 子句:

try:
    x=1/0
except:
    log.err() #会自动记录ZeroDivisionError

startLogging

通过一个类似文件对象来开始日志,例如:

log.startLogging(open("/var/log/foo.log",'w'))

或者:

log.startLogging(sys.stdout)

缺省条件下,startLogging会同时将输出重定向到sys.stdout和sys.stderr。你可以在startLogging中设置setStdout=False来禁用这个功能。

 

example:

import sys

from twisted.python import log
from twisted.internet import defer

"""This example illustrates some Twisted logging basics."""

log.msg('This will not be logged, we have not installed a logger.')

log.startLogging(open(r"./test.log",'w'))

log.msg('This will be logged.')
log.err('This will be logged as an error.')

def bad_callback(result):
    xxx

try:
    bad_callback()
except:
    log.err('The next function call will log the traceback as an error.')
    log.err()

d = defer.Deferred()

def on_error(failure):
    log.err('The next function call will log the failure as an error.')
    log.err(failure)

d.addCallback(bad_callback)
d.addErrback(on_error)

d.callback(True)

log.msg('End of example.')

 

输出:

2011-11-17 15:49:19+0800 [-] Log opened.
2011-11-17 15:49:19+0800 [-] This will be logged.
2011-11-17 15:49:19+0800 [-] 'This will be logged as an error.'
2011-11-17 15:49:19+0800 [-] 'The next function call will log the traceback as an error.'
2011-11-17 15:49:19+0800 [-] Unhandled Error
 Traceback (most recent call last):
 --- <exception caught here> ---
   File "D:\WORK\PythonProject\Twisted_intro\src\basic-twisted\log.py", line 19, in <module>
     bad_callback()
 exceptions.TypeError: bad_callback() takes exactly 1 argument (0 given)
 
2011-11-17 15:49:19+0800 [-] 'The next function call will log the failure as an error.'
2011-11-17 15:49:19+0800 [-] Unhandled Error
 Traceback (most recent call last):
   File "D:\WORK\PythonProject\Twisted_intro\src\basic-twisted\log.py", line 33, in <module>
     d.callback(True)
   File "C:\Python25\Lib\site-packages\twisted\internet\defer.py", line 361, in callback
     self._startRunCallbacks(result)
   File "C:\Python25\Lib\site-packages\twisted\internet\defer.py", line 455, in _startRunCallbacks
     self._runCallbacks()
 --- <exception caught here> ---
   File "C:\Python25\Lib\site-packages\twisted\internet\defer.py", line 542, in _runCallbacks
     current.result = callback(current.result, *args, **kw)
   File "D:\WORK\PythonProject\Twisted_intro\src\basic-twisted\log.py", line 16, in bad_callback
     xxx
 exceptions.NameError: global name 'xxx' is not defined
 
2011-11-17 15:49:19+0800 [-] End of example.

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有