使用多处理为每个进程分隔日志?

时间:2013-11-05 19:27:49

标签: python logging multiprocessing

我正在使用python 2.7进行多处理。我希望每个子进程都记录到自己的文件(filename = procname.pid.log)而不是标准日志输出。到目前为止,我已经能够通过在每个子进程start()方法中创建一个logger和FileHandler()来创建每个日志文件,但是我无法阻止日志消息也显示在父日志输出中。我知道父环境是继承的,但是如何在子进程中将其关闭?

我的子进程被实现为从multiprocessing.Process派生的类。我已经避免使用logging.basicConfig,因为我听说它只能执行一次。我见过这段代码:

logger = logging.getLogger(__name__)
logger.propogate = False

但它没有效果。

我一点也不清楚日志记录是如何传播的。我当我调用getLogger时,我创建了一个名为root.__module__的新记录器,但我不知道如何让root用户将printint停在屏幕上。

1 个答案:

答案 0 :(得分:0)

这是在POSIX上吗?在进程创建后配置您的日志记录。那么父进程中的子进程就不应该继承任何内容。

BTW请注意拼写正确:propagate

另请参阅this post了解详情。