【问题标题】:Individual logging in each multiprocessing process每个多处理进程中的单独日志记录
【发布时间】:2018-07-31 08:18:30
【问题描述】:

我正在尝试在 Flask 中的多处理类中实现日志记录,但遇到了一些错误。是否可以单独登录工人阶级?我只希望每个工作人员都登录到自己的日志文件。

最初我尝试使用以下方法,但这导致TypeError: Object of type 'TypeError' is not JSON serializable

from multiprocessing import Process
import logging

class Worker(Process):
    def __init__(self, a, lock, pipe):
        self.a = a
        ...

        self.logger = logging.getLogger('Task Specific Name')

因此,我尝试不将其声明为类变量,但正如预期的那样,它没有传递给运行,也没有打印 TEST2。

class Worker(Process):
    def __init__(self, a, lock, pipe):
        self.a = a
        ...

        logger = logging.getLogger('Task Specific Name')
        logger.setLevel...
        logger.setHandlr...
        logger.info('TEST1')

    def run(self):
        logger.info('TEST2')

【问题讨论】:

  • 每个记录器都可以有自己的 StreamHandler 实例,输出到不同的文件。
  • 问题源于在模块级别声明记录器self.logger = logging.getLogger

标签: python logging multiprocessing


【解决方案1】:

我必须通过在 run 函数中创建一个新的记录器作为局部变量来解决它。

def run(self):
    logger = logging.getLogger('name')
    ...

我猜可以在__init__run 中声明一个FileHandler 并指向同一个文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-20
    • 2022-08-13
    • 1970-01-01
    • 2020-03-27
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    相关资源
    最近更新 更多