Twisted twisted.python.log日志
1???簡(jiǎn)單使用
Twisted提供了一個(gè)簡(jiǎn)單而且可移植的日志系統(tǒng)叫做?twisted.python.log?。它包含3個(gè)函數(shù):
msg
記錄一條信息,例如:
from twisted.python import log log.msg("hello, world")err
把錯(cuò)誤寫入日志,包括traceback信息。你可以傳遞一個(gè)?failure?或者異常的實(shí)例,甚至什么都沒有。如果傳遞其他的東西則會(huì)通過?repr()?函數(shù)獲得字符串來顯示。如果什么都不傳遞則會(huì)自動(dòng)構(gòu)造一個(gè)?Failure?實(shí)例,一般用于 except 子句:
try:x=1/0 except:log.err() #會(huì)自動(dòng)記錄ZeroDivisionErrorstartLogging
通過一個(gè)類似文件對(duì)象來開始日志,例如:
log.startLogging(open("/var/log/foo.log",'w'))或者:
log.startLogging(sys.stdout)缺省條件下,startLogging會(huì)同時(shí)將輸出重定向到sys.stdout和sys.stderr。你可以在startLogging中設(shè)置setStdout=False來禁用這個(gè)功能。
?
1.1???日志與twistd
如果你使用twistd來運(yùn)行你的程序作為后臺(tái)進(jìn)程,則他會(huì)自動(dòng)托管startLogging,甚至還會(huì)自動(dòng)輪訓(xùn)日志。查看?twistd and tac?一節(jié)或twistd的man手冊(cè)了解更多。
?
1.2???日志文件
twisted.python.logfile?模塊提供了一些可以同startLogging共同使用的類,例如?DailyLogFile?,提供了以天為單位的日志輪詢。
?
2???編寫日志監(jiān)視器
日志監(jiān)視器是Twisted日志系統(tǒng)的基礎(chǔ)。一個(gè)日志監(jiān)視器的例子是供startLogging使用的?FileLogObserver?,可以把事件寫入文件中。一個(gè)日志監(jiān)視器是可調(diào)用的,并且只接受一次字典作為參數(shù)。隨后你可以用它來接收所有的日志事件(當(dāng)然也會(huì)給其他日志監(jiān)視器):
twisted.python.log.addObserver(yourCallable)字典至少有2個(gè)項(xiàng)目:
message
日志信息,一個(gè)列表或字符串,被log.msg或log.err傳遞過來的。
isError
一個(gè)布爾值,如果為True時(shí)就是從log.err過來的。如果為True說明字典當(dāng)中還會(huì)有個(gè)Failure對(duì)象。
其他項(xiàng)目是自動(dòng)被加入的:
printed
這條信息是從sys.stdout中捕獲的,例如這條信息是從print輸出的。如果isError同樣為True,則是從sys.stderr來的。
你可以通過 log.msg 或 log.err 傳遞附加項(xiàng)目到事件字典。標(biāo)準(zhǔn)的日志監(jiān)視器將會(huì)忽略他們不用的字典參數(shù)。
?
Note
注意
- 不要在日志監(jiān)視器中拋出異常,否則會(huì)掛掉。
- 不要在日志監(jiān)視器中阻塞,尤其是在主線程中。這將會(huì)導(dǎo)致很多問題。
- 日志監(jiān)視器需要線程安全。
總結(jié)
以上是生活随笔為你收集整理的Twisted twisted.python.log日志的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 中的 del 使用方法
- 下一篇: websocket python爬虫_p