我需要創建一個可以在我的python包中使用的單個記錄器,但是其中一些函數實現了多處理。我希望所有這些函數都像其他所有函數一樣寫入相同的日誌文件。使用多處理模塊記錄
我知道在Python 3.2+有一個內置的方式來做到這一點,但我需要支持端口到Python 2.7.x以及。
有什麼代碼可以很好地處理日誌中的多處理和非多處理功能嗎?
通常情況下,我會創建一個日誌這樣:
module = sys.modules['__main__'].__file__
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG,
format='%(name)s (%(levelname)s): %(message)s')
log = logging.getLogger(module)
fh = RotatingFileHandler(arguments.o, mode='a', maxBytes=2*1024*1024,
backupCount=2, encoding=None, delay=0)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - % (message)s')
fh.setFormatter(formatter)
fh.setLevel(logging.DEBUG)
log.addHandler(fh)
然後輸出將寫入到一個文件中。它工作的很好,但是當我實現這個時,這段代碼會創建多個文件,這是我不想要的。
任何想法?
謝謝
你是否把這個代碼放在通常的'if __name__ =='__main __':'conditional?請記住,當使用'multiprocessing'時,不是導入或函數/類定義的** everything **應該在那裏。 – Bakuriu
@Bakuriu - 我正在做模塊級別的日誌創建,因爲這是一個python包。 –