logging breakdown

Marek Augustyn maug at poczta.onet.pl
Thu Feb 19 06:17:07 EST 2004


Hello,

I'm getting strange exception raised using module logging.
It's strange because it happens only sometimes, and it happens
in different places (but always in a logging method).
i.e. this line of code:

log.info('SMS sent')

produces following traceback:

Traceback (most recent call last):
  File "L:\_progs\python\test\send_sms.py", line 36, in send_sms
    log.info('SMS sent')
  File "L:\Python23\lib\logging\__init__.py", line 893, in info
    apply(self._log, (INFO, msg, args), kwargs)
  File "L:\Python23\lib\logging\__init__.py", line 994, in _log
    self.handle(record)
  File "L:\Python23\lib\logging\__init__.py", line 1004, in handle
    self.callHandlers(record)
  File "L:\Python23\lib\logging\__init__.py", line 1037, in callHandlers
    hdlr.handle(record)
  File "L:\Python23\lib\logging\__init__.py", line 592, in handle
    self.emit(record)
  File "L:\Python23\lib\logging\__init__.py", line 684, in emit
    self.handleError(record)
  File "L:\Python23\lib\logging\__init__.py", line 636, in handleError
    traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr)
  File "L:\Python23\lib\traceback.py", line 123, in print_exception
    print_tb(tb, limit, file)
  File "L:\Python23\lib\traceback.py", line 69, in print_tb
    if line: _print(file, '    ' + line.strip())
  File "L:\Python23\lib\traceback.py", line 13, in _print
    file.write(str+terminator)
IOError: [Errno 9] Bad file descriptor


This is the way I initialize logging:

def initLogger(filename):
    log = logging.getLogger('test')
    formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s')

    # file
    hdlr = logging.FileHandler(filename)
    hdlr.setFormatter(formatter)
    log.addHandler(hdlr)

    # screen
    hdlr = logging.StreamHandler(sys.stdout)
    hdlr.setFormatter(formatter)
    log.addHandler(hdlr)
    
    log.setLevel(logging.DEBUG)
    
    return log

log = initLogger('test.log')

I pass variable "log" to functions requesting it.
My script runs continually, sleeping 1h, doing something, sleeping 1h, etc.
Is it possible that file handler expires or something?

Do I do something wrong?

Thanks,
Marek Augustyn



More information about the Python-list mailing list