【问题标题】:Separate logs for each process using multiprocessing?使用多处理为每个进程单独的日志?
【发布时间】:2013-11-05 19:27:48
【问题描述】:

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

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

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

但是没有效果。

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

【问题讨论】:

标签: python logging multiprocessing


【解决方案1】:

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

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

另外,请参阅this post 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-13
    • 2012-01-25
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2023-04-09
    • 2013-05-03
    • 2020-01-11
    相关资源
    最近更新 更多