3
A
回答
0
0
也許在啓動時替換logging.debug
?
import logging
d = logging.debug
def myDebug(*args):
print "I'm a spy", args
d(*args)
logging.debug = myDebug
+3
從來沒有這樣做。鑑於其本身提供的巨大可配置性,絕對沒有理由對日誌記錄模塊進行猴式修補。 – ncoghlan 2011-04-13 13:53:56
4
是,提供了一個機制,以容易地捕獲和重定向事件的詳細信息,而無需任何修改的代碼發射的事件是logging
模塊的全部目的。
您所需要做的只是在應用程序啓動時對logging.basicConfig()
進行適當調用,您可以隨時隨地發送記錄的事件。
最簡單的就是隻要登錄到stdout
:
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
對於更高級的選項,我建議檢查出的官方文檔中的logging tutorial。
如果您希望在撥打電話的位置編程式訪問格式化的郵件,那麼logging
模塊是該作業的錯誤工具。它專爲發射事件而設計,不能用作直接呼叫str.format
的替代方案。
爲您在您的評論描述的情況,你可能要考慮大意如下的一個hierarchical logging設置:
>>> import logging
>>> import sys
>>> logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
>>> master = logging.getLogger("master")
>>> child1 = logging.getLogger("master.child1")
>>> child2 = logging.getLogger("master.child2")
>>> child1.debug("Event from child 1")
DEBUG:master.child1:Event from child 1
>>> child2.debug("Event from child 2")
DEBUG:master.child2:Event from child 2
在此設置中,請注意,我只在該根級別配置的處理程序層次結構(作爲basicConfig()
調用的一部分)。 logging
瞭解記錄器名稱中的「parent.child」表示法,因此它會將傳遞給子記錄器的所有事件傳遞給主記錄器,然後再將它們傳遞給根記錄器。
根據需要,您可以在master
和child
級別添加其他日誌處理程序,以便根據需要重定向輸出。
相關問題
- 1. Python的SVN - 輸出日誌消息
- 2. Python的日誌記錄配置:輸出跟蹤到文件,輸出日誌消息到控制檯
- 3. Python日誌記錄 - 額外輸出?
- 4. 捕獲日誌記錄的返回值,然後返回Scala中的值
- 5. Python日誌記錄模塊輸出不必要的信息
- 6. 捕獲谷歌應用程序引擎日誌記錄輸出
- 7. Powershell - 寫入日誌消息返回輸出變量
- 8. ZF2日誌記錄:將自定義信息添加到日誌記錄輸出
- 9. Python日誌記錄到標準輸出和日誌文件
- 10. Python嘲笑日誌記錄,同時保留日誌輸出
- 11. Python日誌記錄。消息使用相同日期
- 12. Spring SOAP消息參數日誌記錄
- 13. Rails日誌記錄消息test.log?
- 14. 消息和彩信日誌記錄
- 15. wcf rest服務消息日誌記錄
- 16. 從導入的python文件捕獲日誌消息
- 17. Log4j日誌記錄信息消息沒有記錄警告消息
- 18. 如何格式化python日誌記錄器的默認消息
- 19. 是否可以捕獲DirectX11運行時消息以進行日誌記錄?
- 20. Python日誌記錄:捆綁重複消息
- 21. 沒有發送Python日誌記錄SMTP處理程序消息
- 22. 錯誤的格式化日誌消息;日誌記錄已寫入日誌
- 23. Python日誌消息「亂序」
- 24. 在java中捕獲xsl:消息輸出
- 25. 去日誌記錄到多個輸出
- 26. 在Java中輸出日誌記錄
- 27. IntelliJ 14.1 xml日誌記錄輸出
- 28. 在Perl中輸出日誌記錄
- 29. Node.js Winston日誌記錄:數組輸出
- 30. 使用Python日誌記錄模塊時的重複日誌輸出
你應該告訴我們關於上下文的一些事情:你自己編寫日誌代碼,還是想攔截來自另一個模塊/框架/日誌消息? – 2011-04-13 14:02:53
hi das,我問的原因是我啓動(使用subprocess.Popen)一些子進程(C++程序)併爲每個進程創建一個python記錄器。每個進程的輸出記錄到每個進程記錄器。我想要一個包含每個進程輸出的「主」日誌,以便主日誌中的每個條目都包含每個進程的記錄器名稱作爲標識符 – mikip 2011-04-14 08:38:20