Preserving logging streams through a daemon.DaemonContext switch
Ben Finney
ben+python at benfinney.id.au
Fri Apr 9 21:09:16 EDT 2010
Vinay Sajip <vinay_sajip at yahoo.co.uk> writes:
> On Apr 9, 12:46 am, Ben Finney <ben+pyt... at 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 <puntabluda at 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
More information about the Python-list
mailing list