每个多处理流程中的单独日志记录

时间:2018-07-31 08:18:30

标签: python logging multiprocessing

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

最初,我尝试了以下操作,但这导致了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')

1 个答案:

答案 0 :(得分:0)

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

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

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