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

R

rikardhulten

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
 
M

Mark Lawrence

On said:
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

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
 
R

rikardhulten

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



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.

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
 
R

rikardhulten

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



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.

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
 
D

Dieter Maurer

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?

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").
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top