python logging:多个记录器错误

时间:2016-07-10 07:32:14

标签: python logging

我有一个名为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'

有没有办法处理多个记录器?

1 个答案:

答案 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")