3

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

我的子进程实现为派生自 multiprocessing.Process 的类。我已经避免使用 logging.basicConfig,因为我听说它只能执行一次。我已经看到这个代码建议:

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

但它没有效果。

我完全不清楚日志记录是如何传播的。我认为当我调用 getLogger 时,我创建了一个名为 的新记录器root.__module__,但我不知道如何让根目录停止 printint 到屏幕。

4

1 回答 1

0

这是在 POSIX 上吗?在进程创建配置您的日志记录。那么子进程不应该从父进程继承任何东西。

顺便说一句,请注意正确的拼写:propagate.

另外,请参阅这篇文章了解更多信息。

于 2013-11-06T00:03:46.370 回答