Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Can I get logging.FileHandler to close the file on each emit?

1,128 views
Skip to first unread message

rikard...@gmail.com

unread,
Aug 29, 2012, 6:18:45 AM8/29/12
to
I use logging.FileHandler (on windows) and I would like to be able to delete the file while the process is running and have it create the file again on next log event.

On windows (not tried linux) this is not possible because the file is locked by the process, can I get it to close the file after each log event?

If not, would the correct thing to do be to write my own LogHandler with this behavior?

/ Rikard

Mark Lawrence

unread,
Aug 29, 2012, 8:49:33 AM8/29/12
to pytho...@python.org
I know little about the logging module but given that the FileHandler[1]
has a close method, can you simply call that, delete the file and reopen
where needed? Failing that I'd look at subclassing existing code and
not writing your own (Your wording implies to me that you're thinking of
writing something from scratch, my apologies should I be wrong on that).

[1] http://docs.python.org/dev/library/logging.handlers.html

--
Cheers.

Mark Lawrence.

rikard...@gmail.com

unread,
Aug 29, 2012, 8:57:11 AM8/29/12
to pytho...@python.org
On Wednesday, August 29, 2012 2:48:57 PM UTC+2, Mark Lawrence wrote:
I want to delete the file from outside the process while it is running, so in the code I have no idea when that is...

I meant subclassing logging.Handler, which I went ahead and tried and it seems to work as I like.

Basically in emit I do
1. open log file
2. write msg to it
3. close file

/ Rikard

rikard...@gmail.com

unread,
Aug 29, 2012, 8:57:11 AM8/29/12
to comp.lan...@googlegroups.com, pytho...@python.org
On Wednesday, August 29, 2012 2:48:57 PM UTC+2, Mark Lawrence wrote:

Dieter Maurer

unread,
Aug 30, 2012, 3:24:09 AM8/30/12
to pytho...@python.org
Zope is using Python's "logging" module and wants to play well
with log rotating (start a new logfile, do something with the old log file
(compress, rename, remove)).
It does this by registering a signal handler which closes its logfiles
when the corresponding signal is received.

Maybe, you can do something like this. Signal handling under
Windows is limited, but maybe you find a usable signal under Windows
(Zope is using "SIGUSR1").

0 new messages