【发布时间】:2016-09-28 11:56:33
【问题描述】:
我需要创建一个可以在我的 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__':条件中?请记住,在使用multiprocessing时,不是导入或函数/类定义的所有内容都应该放在那里。 -
@Bakuriu - 我正在模块级别创建日志,因为这是针对 python 包的。
标签: python python-2.7 logging