I have a python program that is writing to a log file that is being rotated by Linux's logrotate command. When this happens I need to signal my program to stop writing to the old file and start writing to the new one. I can handle the signal but how do I tell python to write to the new file?
I am opening the file like this:
logging.basicConfig(format='%(asctime)s:%(filename)s:%(levelname)s:%(message)s',filename=log_file, level=logging.INFO)
and writing to it like this:
logging.log(level,"%s" % (msg))
The logging modules look very powerful but also overwhelming. Thanks.
This should help you in handling rotating log
You may want to look at WatchedFileHandler to implement this, or as an alternative, implement log rotation with RotatingFileHandler, both of which are in the logging.handlers module.
Don't use
logging.basicConfig
, useWatchedFileHandler
. Here's how to use it.Since rotation is already being done by
logrotate
, in your signal handler you should just calllogging.basicConfig(...)
again and that should reopen the log file.