У меня есть приложение, которое должно запускать ряд прогонов моделирования. Я хочу настроить механизм ведения журнала, где все logrecords регистрируются в файле general.log, и все журналы для запуска симуляции идут в run00001.log,.... Для этого я определил класс Run. в __init__()
для runlog добавляется новый дескриптор файла.
Проблема в том, что лог файлы для прогонов никогда не освобождаются, поэтому после нескольких прогонов доступные ручки исчерпаны и сбой запускается.
Я установил некоторые процедуры, чтобы проверить это следующим образом
основная процедура
import Model
try:
myrun = Model.Run('20130315150340_run_49295')
ha = raw_input('enter')
myrun.log.info("some info")
except:
traceback.print_exc(file=sys.stdout)
ha = raw_input('enter3')
Класс Run определен в модуле Model следующим образом
import logging
class Run(object):
""" Implements the functionality of a single run. """
def __init__(self, runid):
self.logdir="."
self.runid = runid
self.logFile = os.path.join(self.logdir , self.runid + '.log')
self.log = logging.getLogger('Run'+self.runid)
myformatter = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
myhandler = logging.FileHandler(self.logFile)
myhandler.setLevel(logging.INFO)
myhandler.setFormatter(myformatter)
self.log.addHandler(myhandler)
Затем я использую проводник процесса программы, чтобы следить за файловыми обработчиками. И я вижу, что бегуны появляются, но никогда не исчезают.
Есть ли способ заставить это?