This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: TimedRotatingFileHandler missing rotations
Type: enhancement Stage: resolved
Components: Library (Lib) Versions: Python 3.4, Python 3.5, Python 2.7
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: felipecruz, vinay.sajip
Priority: normal Keywords:

Created on 2015-12-02 19:27 by felipecruz, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (2)
msg255757 - (view) Author: Felipe Cruz (felipecruz) * Date: 2015-12-02 19:27
I'm using TimedRotatingFileHandler to rotate a log file *every* minute.

If I stop my program, in the middle of a minute, and start again, the next rotation will happen at (currentTime + 60). The result of this behavior is that I'll end up with files "log_01" and "log_03", instead of "log_01", "log_02" and "log_03".

I'm using this class with a little modification which sets the next rollover 
time to (currentTime + (self.interval - currentSecond)). In this case, even If I stop and start my program in the middle a minute, the next rollover time will be the end of the current minute, not 60 seconds later and the result will be one file for each minute.

To sum up, what happen is that the same program with the very same configuration, produces a different result if stopped for even just one second. If the interval was "rotate every 60 seconds" I would be ok, but If I'm configuring to rotate every minute I expect one file for each minute if the program was running the time the minutes changed.
msg272085 - (view) Author: Vinay Sajip (vinay.sajip) * (Python committer) Date: 2016-08-06 10:09
This is not a bug. For example, if you set up a rotating handler to rollover every minute but only log once every two minutes, you won't get any empty log files for the minutes where logging didn't happen.

The behaviour of the handler isn't expected to keep track of when the program is interrupted and restarted. If you need this, it is best to subclass the handler.
History
Date User Action Args
2022-04-11 14:58:24adminsetgithub: 69971
2016-08-18 18:28:39vinay.sajipsetstatus: pending -> closed
stage: resolved
2016-08-06 10:09:27vinay.sajipsetstatus: open -> pending
resolution: not a bug
messages: + msg272085
2015-12-02 19:31:58SilentGhostsetnosy: + vinay.sajip
type: behavior -> enhancement
components: + Library (Lib)
2015-12-02 19:27:52felipecruzcreate