我需要创建一个可以在我的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包。 –