2012-03-22 25 views
4

在使用多處理模塊產生不同進程的python腳本中,Python docs I found that logging messages是可能的。如何將日誌消息從多重處理模塊路由到文件?

import multiprocessing 
import logging 

logger = multiprocessing.log_to_stderr() 
logger.setLevel(logging.INFO) 

所以logger.warning('doomed')會給我消息'doomed',但只有到控制檯。

如何將日誌消息切換到文件?

+1

你檢查在'logging.basicConfig'的文檔? – hochl 2012-03-22 13:18:00

回答

5

多進程日誌記錄不是微不足道的,但也並不困難。您需要logging模塊。

重點是有一個偵聽器進程,將通過multiprocessing queues接收所有日誌記錄。這個監聽器進程將使用你決定使用的任何內部處理程序來處理這些記錄。在你的情況下,你可能想要使用FileHandler或類似的。

如果您使用的是Python 3.2或更高版本,則標準庫中將同時包含QueueHandlerQueueListenerQuelistener是我之前討論過的監聽程序(是的,它有一個start()方法)。

如果您使用的是以前的Python版本,請查看link,它基本上顯示瞭如何重寫它們(以及如何使用它們)。


如果你想從官方文檔一個參考,看看從Logging CookbookLogging to a single file from multiple processes會議。

您還可能有興趣在this answer從問題How should I log while using multiprocessing in Python?

+0

謝謝您的詳細解答! – Aufwind 2012-03-23 08:30:14

相關問題