Twisted twisted.python.log日志
1???簡單使用
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() #會自動記錄ZeroDivisionErrorstartLogging
通過一個類似文件對象來開始日志,例如:
log.startLogging(open("/var/log/foo.log",'w'))或者:
log.startLogging(sys.stdout)缺省條件下,startLogging會同時將輸出重定向到sys.stdout和sys.stderr。你可以在startLogging中設置setStdout=False來禁用這個功能。
?
1.1???日志與twistd
如果你使用twistd來運行你的程序作為后臺進程,則他會自動托管startLogging,甚至還會自動輪訓日志。查看?twistd and tac?一節或twistd的man手冊了解更多。
?
1.2???日志文件
twisted.python.logfile?模塊提供了一些可以同startLogging共同使用的類,例如?DailyLogFile?,提供了以天為單位的日志輪詢。
?
2???編寫日志監視器
日志監視器是Twisted日志系統的基礎。一個日志監視器的例子是供startLogging使用的?FileLogObserver?,可以把事件寫入文件中。一個日志監視器是可調用的,并且只接受一次字典作為參數。隨后你可以用它來接收所有的日志事件(當然也會給其他日志監視器):
twisted.python.log.addObserver(yourCallable)字典至少有2個項目:
message
日志信息,一個列表或字符串,被log.msg或log.err傳遞過來的。
isError
一個布爾值,如果為True時就是從log.err過來的。如果為True說明字典當中還會有個Failure對象。
其他項目是自動被加入的:
printed
這條信息是從sys.stdout中捕獲的,例如這條信息是從print輸出的。如果isError同樣為True,則是從sys.stderr來的。
你可以通過 log.msg 或 log.err 傳遞附加項目到事件字典。標準的日志監視器將會忽略他們不用的字典參數。
?
Note
注意
- 不要在日志監視器中拋出異常,否則會掛掉。
- 不要在日志監視器中阻塞,尤其是在主線程中。這將會導致很多問題。
- 日志監視器需要線程安全。
總結
以上是生活随笔為你收集整理的Twisted twisted.python.log日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 中的 del 使用方法
- 下一篇: 关于Ubuntu中 E: Could n