Python 2.7 如何将日志记录程序python写入2文件?
我使用python中的模块日志来编写我的程序日志,我想在另外两个字段中记录到2个文件,但在运行程序时,创建的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
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)
我希望这有帮助