我有一个名为Job的对象,它有自己的记录器(每个Job需要有一个日志文件,由logging.getLogger()表示)
问题是我创建了数千个作业(~4000),他们都想创建一个记录器。
Traceback (most recent call last):
File "/u/lib/btool/Job.py", line 151, in __init__
File "/usr/lib/python2.7/logging/__init__.py", line 911, in __init__
File "/usr/lib/python2.7/logging/__init__.py", line 936, in _open
IOError: [Errno 24] Too many open files: '/x/zooland/20160710-032802.log'
有没有办法处理多个记录器?
答案 0 :(得分:1)
这是一个自定义文件处理程序,用于存储日志消息,然后关闭文件。
import logging
class MyFileHandler(logging.Handler):
def __init__(self, filename):
self.filename = filename
super().__init__()
def emit(self, record):
log_text = self.format(record)
try:
fh = open(self.filename, "a")
fh.write(log_text)
fh.close()
return True
except:
return False
logger = logging.getLogger("job")
handler = MyFileHandler("file-1")
logger.addHandler(handler)
logger.error("hola")