Python 2.7 如何将日志记录程序python写入2文件?

Python 2.7 如何将日志记录程序python写入2文件?,python-2.7,logging,Python 2.7,Logging,我使用python中的模块日志来编写我的程序日志,我想在另外两个字段中记录到2个文件,但在运行程序时,创建的2个文件日志和内容日志是相同的,代码如下: import threading import traceback import time import logging from logging import handlers class Worker(): def __init__(self): self.logger = logging.getLogger(__n

我使用python中的模块日志来编写我的程序日志,我想在另外两个字段中记录到2个文件,但在运行程序时,创建的2个文件日志和内容日志是相同的,代码如下:

import threading
import traceback
import time
import logging
from logging import handlers

class Worker():
    def __init__(self):
        self.logger = logging.getLogger(__name__)
        self.logger.setLevel(logging.INFO)

        self.logger_error = logging.getLogger(__name__)
        self.logger_error.setLevel(logging.INFO)

        handler = handlers.TimedRotatingFileHandler(filename='logworker/log', when='D', interval=1)
        handler.setLevel(logging.INFO)

        handler_error = handlers.TimedRotatingFileHandler(filename='logjoberror/log', when='D', interval=1)
        handler_error.setLevel(logging.INFO)

        formatter = logging.Formatter('%(asctime)s - %(message)s')
        handler.setFormatter(formatter)
        handler_error.setFormatter(formatter)

        self.logger.addHandler(handler)
        self.logger_error.addHandler(handler_error)

        try:
            self.log2 = threading.Thread(target=self.log2)
            self.log2.setDaemon
            self.log2.start()
        except:
            traceback.print_exc()
#------------------------------------------------------------------------------ 
    def log1(self):
        while True:
            time.sleep(1)
            try:
                self.logger.info('log to file 1 1111111111111')
            except:
                traceback.print_exc()
#------------------------------------------------------------------------------
    def log2(self):
        while True:
            time.sleep(1)        
            try:
                self.logger_error.info('log to file 2 22222222')
            except:
                traceback.print_exc()

if __name__ == "__main__":
    a = Worker()
    a.log1()

This content file log1:
2013-11-19 16:05:34,717 - log to file 2 22222222
2013-11-19 16:05:34,717 - log to file 1 1111111111111
2013-11-19 16:05:35,717 - log to file 2 22222222
2013-11-19 16:05:35,717 - log to file 1 1111111111111
2013-11-19 16:05:36,717 - log to file 1 1111111111111
2013-11-19 16:05:36,717 - log to file 2 22222222
2013-11-19 16:05:37,717 - log to file 1 1111111111111
此内容文件日志2:

2013-11-19 16:05:34,717 - log to file 2 22222222
2013-11-19 16:05:34,717 - log to file 1 1111111111111
2013-11-19 16:05:35,717 - log to file 2 22222222
2013-11-19 16:05:35,717 - log to file 1 1111111111111
2013-11-19 16:05:36,717 - log to file 1 1111111111111

帮帮我

请阅读15.7.1。记录器对象来自

上面说

使用相同名称多次调用getLogger()将始终返回对同一记录器对象的引用

这就是为什么你的代码必须这样做

除了您使用模块的方式之外,该模块不是最干净的,对于POC来说,这应该可以解决它:

    handler = handlers.TimedRotatingFileHandler(filename='logworker/log', when='D', interval=1)
    handler.setLevel(logging.INFO)
    handler.setFormatter(formatter)
    self.logger = logging.getLogger('logger')
    self.logger.setLevel(logging.INFO)
    self.logger.addHandler(handler)

    handler_error = handlers.TimedRotatingFileHandler(filename='logjoberror/log', when='D', interval=1)
    handler_error.setLevel(logging.ERROR)
    handler_error.setFormatter(formatter)
    self.logger_error = logging.getLogger('handler_error')
    self.logger_error.setLevel(logging.ERROR)
    self.logger_error.addHandler(handler_error)
我希望这有帮助