我使用Python logging
模块打印日志文件,但我遇到了“太多打开的文件描述符”,我也记得要关闭日志文件处理的问题,但问题仍然存在。记录模块:打开太多的文件描述
下面是我的代码
class LogService(object):
__instance = None
def __init__(self):
self.__logger = logging.getLogger('ddd')
self.__handler = logging.FileHandler('/var/log/ddd/ddd.log')
self.__formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
self.__handler.setFormatter(self.__formatter)
#self.__logger.addHandler(self.__handler)
@classmethod
def getInstance(cls):
if cls.__instance == None:
cls.__instance = LogService()
return cls.__instance
# log Error
def logError(self, msg):
self.__logger.addHandler(self.__handler)
self.__logger.setLevel(logging.ERROR)
self.__logger.error(msg)
# Remember to close the file handler
self.closeHandler()
# log Warning
def logWarning(self, msg):
self.__logger.addHandler(self.__handler)
self.__logger.setLevel(logging.WARNING)
self.__logger.warn(msg)
# Remember to close the file handler
self.closeHandler()
# log Info
def logInfo(self, msg):
self.__logger.addHandler(self.__handler)
self.__logger.setLevel(logging.INFO)
self.__logger.info(msg)
# Remember to close the file handler
self.closeHandler()
def closeHandler(self):
self.__logger.removeHandler(self.__handler)
self.__handler.close()
并运行一段时间这个代码后,下面显示,有太多打开的文件描述符。
[[email protected] ~]# lsof | grep ddd | wc -l
11555
请用实际回溯显示实际的异常,而不是仅仅模糊地描述它。 (我怀疑实际的错误是指“文件描述”。) – abarnert
*提示:* Python不是Java。不要尝试使用Java方法编写Python代码:) –
是的,谢谢,我想你可能是对的,我之前是Java编码器。:-) – hcz