May-23-2021, 06:02 AM
Hi , I am new to python. I am trying to have a logrotate feature and also try to print the logs in formatted fashion.
So I have created two handlers one for log roataion and other for log formatting.
The log rotation is working fine as alone, but as soon as i enable format handler logger.addHandler(f_handler) , I am getting the error
I request some experts to point me what is wrong i am doing here and guide me in right direction pls.
So I have created two handlers one for log roataion and other for log formatting.
The log rotation is working fine as alone, but as soon as i enable format handler logger.addHandler(f_handler) , I am getting the error
Error:Traceback (most recent call last):
File "C:\Python27\lib\logging\handlers.py", line 77, in emit
self.doRollover()
File "C:\Python27\lib\logging\handlers.py", line 142, in doRollover
os.rename(self.baseFilename, dfn)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process
Logged from file log_rotate.py, line 37
Traceback (most recent call last):
File "C:\Python27\lib\logging\handlers.py", line 77, in emit
self.doRollover()
File "C:\Python27\lib\logging\handlers.py", line 142, in doRollover
os.rename(self.baseFilename, dfn)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process
Logged from file log_rotate.py, line 38
What i don't understand is why adding an extra handler to existing logger is giving problem.I request some experts to point me what is wrong i am doing here and guide me in right direction pls.
import logging import time from logging.handlers import RotatingFileHandler def create_rotating_log(path): """ Creates a rotating log """ # date_strftime_format = "%d-%b-%y %H:%M:%S" # message_format='%(asctime)s %(levelname)s %(module)s - %(funcName)s: %(message)s' logger = logging.getLogger("Rotating Log") logger.setLevel(logging.DEBUG) f_handler = logging.FileHandler(path) # add a rotating handler handler = RotatingFileHandler(path, maxBytes=1024, backupCount=5) logger.addHandler(handler) f_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') f_handler.setFormatter(f_format) #enabling this causing error WindowsError: [Error 32] The process cannot access the file because it is being used by another process # logger.addHandler(f_handler) def logtheLogs(): logger = logging.getLogger("Rotating Log") for i in range(3): logger.info("This is INFO test log line %s" % i) logger.error("This is ERR test log line %s" % i) def MoreLogs(): logger = logging.getLogger("Rotating Log") for i in range(3): logger.info("From More This is test log line %s" % i) logger.warning("From More This is WAR test log line %s" % i) if __name__ == "__main__": log_file = "test.log" create_rotating_log(log_file) logtheLogs() MoreLogs()