Vinay Sajip <vinay_sa...@yahoo.co.uk> writes: > On Apr 9, 12:46 am, Ben Finney <ben+pyt...@benfinney.id.au> wrote: > > Not quite. As the docs specify, you need to pass the *file > > descriptors* for the files you want preserved. > > Okay, but the docstring you quoted: > > "Elements of the list are file descriptors (as returned by a file > object's `fileno()` method) or Python `file` objects." > > implies that fh.stream would work as well as fh.stream.fileno()
You're quite right, I made a mistake in what I wrote above. Rebelo <puntabl...@gmail.com> writes: > Ben Finney wrote: > > So how do we get the file object for a logging handler? The > > ‘logging’ module documentation doesn't mention any way to get at the > > stream object for the handlers. > > > > But looking at the source code for ‘StreamHandler’ on my system, > > ‘/usr/lib/python2.5/logging/__init__.py’, shows a ‘stream’ attribute > > that is bound to the stream object. It's not marked private (i.e. > > it's not named with a leading underscore), so one presumes it is > > part of the public API. […] > > > > lh = logging.handlers.TimedRotatingFileHandler( > > LOG_FILENAME, > > # … > > ) > > log_stream_descriptor = lh.stream.fileno() > > > > daemon_context.files_preserve = [log_stream_descriptor] > > The above can then be simplified as: lh = logging.handlers.TimedRotatingFileHandler( LOG_FILENAME, # … ) daemon_context.files_preserve = [lh.stream] > thank you both for a detailed explanation. I hope this helps you to make better use of ‘python-daemon’, and thank you for raising questions here. This is a good addition for the Frequently Asked Questions document; I will do this and it will be available in the next version of the library. -- \ “I prayed for twenty years but received no answer until I | `\ prayed with my legs.” —Frederick Douglass, escaped slave | _o__) | Ben Finney -- http://mail.python.org/mailman/listinfo/python-list